정명직의 게임개발

[Unity] SerializeField, Serializable ?? 본문

Unity

[Unity] SerializeField, Serializable ??

정명직 2023. 7. 6. 23:40

개발을 하다보면 변수를 선언할 때 인스펙터 창에서 접근할 수 있게 접근제한자를 public으로 선언한다.
하지만 public을 사용하면 외부 스크립트에서도 접근할 수 있게 된다.

 

그래서 인스펙트 창에 노출하고 외부스크립트로 부터 변수를 감추고 싶을 때 SerializeField을 사용한다.

SerializeField

접근 제한자 “private”를 통해 객체의 정보를 은닉하고, 캡슐화는 유지하면서, 유니티 에디터의 Inspactor에서 값을 변경하고 싶을 때 사용한다.

반대로 변수에 접근제한자가 “public”으로 지정되어 있지만 유니티 에디터 Inspactor에 노출을 막기위해서는 [HideInInspactor] 키워드를 사용하면 된다.

 

 

Serializable

사용자가 정의한 클래스(class) 또는 구조체(Structure)의 정보를 유니티 에디터 Inspactor에 노출시킨다.

위와 같이 사용자 정의 클래스의 윗줄에 [Serializable] 키워드를 붙이고, C# 스크립트 메인 클래스에서 해당 클래스의 객체를 생성하면 아래와 같이 Inspactor에 노출되어 값을 지정할 수 있습니다.

 

정리

  • 변수의 값이 외부객체로 부터 변경되면 안되지만 Inspactor에서 값을 변경하고 싶을 때 SerializeField 사용
  • 클래스(class) 또는 구조체(Structure)를 Inspactor에 노출시키고 싶을 때 Serializable키워드 사용