Menu
CoddyTech

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는 씬에 저장된 값을 아무런 알림 없이 버립니다. 오류 메시지도 없이 필드 값이 코드에 지정된 숫자로 되돌아갑니다.

challenge icon

챌린지

쉬움

다른 스크립트에서는 램프의 높이를 숨기되 Inspector에는 표시되도록 하세요.

  1. 필드를 [SerializeField] private float height = 1f;로 변경하세요.
  2. 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 플레이그라운드