Unity C# 기초집LESSON 05
C#과 Inspector 연결
난이도초급
예상 시간35분
선수지식4강 PackageMover
5강. C#과 Inspector 연결
1. 이번 강의에서 해결할 문제
속도를 바꾸려고 코드 파일을 수정하고, SpriteRenderer를 매번 검색합니다. 필요한 값과 참조는 Inspector에서 연결하되 null 상태를 조용히 방치하지 않게 만듭니다.
2. 학습 목표
3. 핵심 개념
[SerializeField] private는 다른 클래스가 값을 마음대로 변경하지 못하게 하면서 Inspector 직렬화와 편집을 허용합니다. 참조는 이름 검색보다 Inspector에서 명시적으로 연결하면 의존 관계가 눈에 보입니다.
4. 단계별 실습
C# · 파일 경로: Assets/DeliverySorter/Scripts/Packages/PackageMover.cs
PackageMover.cs
using UnityEngine;
public sealed class PackageMover : MonoBehaviour
{
[SerializeField, Min(0f)] private float fallSpeed = 2f;
[SerializeField] private SpriteRenderer packageRenderer;
private void Awake()
{
if (packageRenderer == null)
{
Debug.LogError("Package Renderer is not assigned.", this);
enabled = false;
}
}
private void Update()
{
transform.position += Vector3.down * fallSpeed * Time.deltaTime;
}
public void SetColor(Color color)
{
packageRenderer.color = color;
}
}
Inspector 연결 작업
PackagePrototype의 Package Mover에서 Fall Speed를2로 둡니다.- 같은 GameObject의 Sprite Renderer를 Package Renderer 슬롯에 끌어 놓습니다.
- 일부러 참조를 비우고 Play해 오류가 해당 오브젝트를 가리키는지 확인한 뒤 다시 연결합니다.
5. 코드가 동작하는 이유
Unity는 Scene 또는 Prefab에 직렬화된 필드 값을 저장하고 로드한 뒤 생명주기 메시지를 호출합니다. Awake에서 필수 참조를 검사하면 첫 사용 시점의 모호한 NullReferenceException 대신 설정 오류를 즉시 보여 줍니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2C#과 Inspector 연결 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
5강. C#과 Inspector 연결 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.