🌍 Unity/유니티 엔진 동작 관련
Unity attribute [field: SerializeField]
맨텀
2022. 11. 20. 16:44
자동 구현 프로퍼티는 인스펙터에서 노출되지 않기 때문에 테스트하기에 불편한 경우가 많다.
Debug 창에서 노출된다만, 커스텀 인스펙터를 사용하는 경우라면 일일이 Debug 창을 보기가 귀찮다.
[field: SerializeField] 란?
자동 구현된 프로퍼티는 field: SerializeField 애트리뷰트로 인스펙터에 노출 가능하다.
중요한 점은 흔히 알려져있는 SerializeField랑은 다른 애트리뷰트임.
[field: SerializeField] vs [SerializeField] 비교
비교를 위해 다음과 같이 SerializeField랑 field: SerializeField 를 같은 형식의 프로퍼티에 적용해본다.


사실 완전히 다른 애트리뷰트는 아니고, 내부 구현으로는 해당 프로퍼티 내부에 있는 필드에 SerializeField를 적용하라는 방식으로 되어있다고 한다.
주의점
1. 데이터만 직렬화 할 수 있다.
2. 자동 구현된 프로퍼티에만 사용할 수 있다. (람다로 구현된 Getter 프로퍼티 등에는 적용 불가능하다)
대단한 건 아니지만, 개인적으로는 캡슐화를 위해 자동 구현된 프로퍼티를 쓰는 경우가 많아서 소소하게 써먹을 곳이 많을 듯하다.