본문으로 건너뛰기
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 연결 작업

  1. PackagePrototype의 Package Mover에서 Fall Speed를 2로 둡니다.
  2. 같은 GameObject의 Sprite Renderer를 Package Renderer 슬롯에 끌어 놓습니다.
  3. 일부러 참조를 비우고 Play해 오류가 해당 오브젝트를 가리키는지 확인한 뒤 다시 연결합니다.

5. 코드가 동작하는 이유

Unity는 Scene 또는 Prefab에 직렬화된 필드 값을 저장하고 로드한 뒤 생명주기 메시지를 호출합니다. Awake에서 필수 참조를 검사하면 첫 사용 시점의 모호한 NullReferenceException 대신 설정 오류를 즉시 보여 줍니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

C#과 Inspector 연결 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1다음 중 “C#과 Inspector 연결”의 핵심 요약을 실제 상황에 맞게 적용한 것은 무엇인가요?
  2. 문제 2‘GameObject.Find를 Update에서 반복’ 상태에 관한 “C#과 Inspector 연결” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

5강. C#과 Inspector 연결 미완료 상태