Unity attribute [field: SerializeField]

 

자동 구현 프로퍼티는 인스펙터에서 노출되지 않기 때문에 테스트하기에 불편한 경우가 많다.

Debug 창에서 노출된다만, 커스텀 인스펙터를 사용하는 경우라면 일일이 Debug 창을 보기가 귀찮다.  

 

[field: SerializeField] 란?

자동 구현된 프로퍼티는 field: SerializeField 애트리뷰트로 인스펙터에 노출 가능하다.

중요한 점은 흔히 알려져있는 SerializeField랑은 다른 애트리뷰트임.

 

[field: SerializeField] vs [SerializeField] 비교

비교를 위해 다음과 같이 SerializeField field: SerializeField  를 같은 형식의 프로퍼티에 적용해본다.

두 attribute 비교

 

Tes2 만 노출되었다.

사실 완전히 다른 애트리뷰트는 아니고, 내부 구현으로는 해당 프로퍼티 내부에 있는 필드에 SerializeField를 적용하라는 방식으로 되어있다고 한다.  

 

주의점

1. 데이터만 직렬화 할 수 있다.

2. 자동 구현된 프로퍼티에만 사용할 수 있다. (람다로 구현된 Getter 프로퍼티 등에는 적용 불가능하다)

 

 

 

대단한 건 아니지만, 개인적으로는 캡슐화를 위해 자동 구현된 프로퍼티를 쓰는 경우가 많아서 소소하게 써먹을 곳이 많을 듯하다.

 

댓글

Designed by JB FACTORY