물론 button
type 이라는 이름 의 변수가 있다고 가정 해 봅시다 .Button
System.Serializable
그 변수를 인스펙터를 통해 할당 할 수 있기를 원합니다 public
.
public class SomeScript : MonoBehaviour{
public Button button;
}
그것은 나에게 그것을 준다 :
이제 코드를 깨끗하고 안전하게 유지하고 싶습니다. 캡슐화를 유지 해야하는 이유가 있습니다.
런타임에서 구성 요소를 검색하는 여러 가지 방법이 있다는 것을 알고 transform.Find("Some/Genius/TypeUnsafe/Path")
있거나 GameObject.Find("3 seconds scene iteration").GetComponent(...).
피하고 싶습니다.
인스펙터에 있는 변수 private access
와 변수 를 어떻게 혼합 public access
합니까?
답변
당신은 SerializeField 속성을 찾고 있습니다
문서에서 :
Unity가 프라이빗 필드를 직렬화하도록합니다.
거의 필요하지 않을 것입니다. Unity가 스크립트를 직렬화하면 공용 필드 만 직렬화됩니다. 그 외에도 Unity가 개인 필드 중 하나를 직렬화하도록하려면 SerializeField 속성을 필드에 추가 할 수 있습니다.
그러면 코드는 다음과 같습니다.
public class SomeScript : MonoBehaviour{
[SerializeField]
private Button button;
}
답변
변수 앞에 SerializeField 속성 을 추가하여 개인 변수를 표시 할 수 있습니다 . 이 같은
[SerializeField]
private Button button;
위 변수는 관리자에게 표시되지만 다른 클래스는이를 가져올 수 없습니다. 반대로 HideInInspector 속성을 통해 관리자에게 공개 된 공개를 숨길 수도 있습니다 . 이 같은
[HideInInspector]
public Button button;
위의 변수는 다른 스크립트에서 액세스 할 수 있지만 검사자에게는 표시되지 않습니다.