티스토리 뷰

🎨/Unity

[Unity] SerializeField

eungding 2022. 3. 23. 14:51
반응형

# as is 

스크립트에 변수를 선언할 때 인스펙터 창에서 접근할 수 있게 하기 위하여

모두 public 으로 선언했다.

 

하지만 public으로 선언하면 인스펙터 창 뿐만아니라

외부 스크립트에서도 접근가능하게 하는 것이다. 

 

# to be 

인스텍터 창에서 노출시키고 싶은데, 

외부스크립트 로부터는 감추고 싶을 때 

 

SerializeField 를 사용할 수 있다!! 

 

 유니티가 사용자의 스크립트를 직렬화 하는 경우에, public 필드만 직렬화합니다. 
추가로 유니티가 private 필드를 직렬화하도록 설정하고 싶은 경우에, SerializeField 속성(attribute)을 필드에 추가할 수 있습니다.
직렬화를 하게되면 인스펙터에서 해당 필드가 노출됩니다. 
유니티는 사용자의 모든 스크립트 컴포넌트를 직렬화 하고, 스크립트 컴포넌트를 직렬화된 버젼으로 다시 로드하고 재생성합니다.

 

문서의 예제인데, hasHealthPotion 변수는 private 이지만 SerializeField attribute를 추가했기 때문에

인스펙터 창에서 노출가능하다. 

 

using UnityEngine;

public class SomePerson : MonoBehaviour {
	//This field gets serialized because it is public.
	public string name = "John";

	//This field does not get serialized because it is private.
	private int age = 40;

	//This field gets serialized even though it is private
	//because it has the SerializeField attribute applied.
	[SerializeField]
	private bool hasHealthPotion = true;

	void Update () {
	}
}

 

 

 

 

반응형
댓글