SerializeField
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 8번째.
public 필드는 두 가지 역할을 동시에 합니다. Inspector에 표시되고, 다른 모든 스크립트에서 읽고 변경할 수 있습니다. 보통은 첫 번째만 원하는 경우가 많습니다. private 필드(C#의 기본값)는 해당 클래스에서만 변경할 수 있으므로 다른 스크립트에서 망가뜨릴 수 없지만, Unity는 이를 Inspector에 표시하지 않습니다.
[SerializeField]는 Unity에 비공개 필드를 저장하고 표시하도록 요청합니다. 이 포탑의 사거리는 Inspector에서 포탑마다 설정하며, 다른 스크립트에서는 건드릴 수 없습니다.
[SerializeField] private float range = 5f;
void Start()
{
Debug.Log("Range: " + range);
}대부분의 Unity 코드는 설정을 이런 방식으로 유지합니다. 비공개로 두고 [SerializeField]를 사용합니다. 반대의 경우는 주의하세요. 필드를 비공개로 만들고 특성을 빠뜨리면 Unity는 씬에 저장된 값을 아무런 알림 없이 버립니다. 필드는 코드에 있는 숫자를 기본값으로 사용하며, 이를 알려 주는 오류도 발생하지 않습니다.
챌린지
쉬움램프의 height는 공개되어 있으므로 어떤 스크립트든 램프를 움직일 수 있습니다. Inspector에서 계속 표시되도록 height를 비공개로 바꾸세요. Inspector는 이 값을 4로 설정합니다. 램프는 여전히 Inspector에 설정된 높이에 매달려 있어야 합니다.
Play를 누르고 램프의 높이를 확인한 다음 Check를 누르세요.
직접 해보기
using UnityEngine;
public class LampHeight : MonoBehaviour
{
public float height = 1f;
void Start()
{
transform.position = new Vector3(0, height, 0);
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.