SerializeField
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 15번째.
public 필드는 두 가지 역할을 동시에 합니다. 인스펙터에 표시되고, 다른 모든 스크립트에서 읽고 변경할 수 있습니다. 보통은 첫 번째 기능만 필요한 경우가 많습니다. private 필드(C#의 기본값)는 해당 클래스에서만 변경할 수 있으므로 다른 스크립트가 값을 망가뜨릴 수 없지만, Unity는 이를 인스펙터에 표시하지 않습니다.
[SerializeField]를 사용하면 Unity가 비공개 필드를 저장하고 표시하도록 할 수 있습니다. 이 포탑의 사거리는 인스펙터에서 포탑마다 설정하며, 다른 스크립트는 이 값에 접근할 수 없습니다.
[SerializeField] private float range = 5f;
void Start()
{
Debug.Log("Range: " + range);
}대부분의 Unity 코드는 설정을 이렇게 유지합니다. 비공개로 선언하고 [SerializeField]를 사용하는 것입니다. 반대의 경우는 주의하세요. 필드를 비공개로 만들고 이 특성을 잊어버리면 Unity는 씬에 저장된 값을 아무런 알림 없이 버립니다. 오류 메시지도 없이 필드 값이 코드에 지정된 숫자로 되돌아갑니다.
챌린지
쉬움다른 스크립트에서는 램프의 높이를 숨기되 Inspector에는 표시되도록 하세요.
- 필드를
[SerializeField] private float height = 1f;로 변경하세요. Start()는 그대로 두세요. Inspector에서height를 4로 설정합니다.
‘플레이’를 누르세요. 램프는 여전히 높이 4에 매달려 있습니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class LampHeight : MonoBehaviour
{
public float height = 1f;
void Start()
{
transform.position = new Vector3(0, height, 0);
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드