Learning
When: 1학년 6월 11일
How:
게임을 만들면서 프로퍼티를 많이 사용하게 되었는데, 프로퍼티는 변수가 아니기 때문에 [SerializeField]로 선언하거나 public으로 선언해도 인스펙터 창에 뜨지 않습니다. 그렇기에 이것을 인스펙터 창에 표시하기 위해 하는 방법을 공부하게 되었습니다.
Understanding:
- 왜 안될까
프로퍼티는 일반적인 변수가 아닙니다. { get; set; }으로 되어 있는 자동구현 프로퍼티라도 결국 변수는 내부에 있고, 외부에 노출되는 것은 변수가 아니기 때문에 Unity는 이것을 인스펙터 창에 표시하지 않습니다.
public 메서드도 인스펙터 창에 표시하지 않는 것을 생각해보면 말이 되는 소리입니다. 하지만 프로퍼티는 변수처럼 쓰기 때문에 직렬화가 필요합니다. 그런데 일반 변수를 직렬화하는 것과는 조금 다른 방식으로 직렬화하게 됩니다. - 방법
[field: SerializeField] public int A { get; set; }
//보통 [field: SerializeField] 하고 줄바꿈을 한 후 프로퍼티를 선언한다.
보통 [field: SerializeField] 하고 줄바꿈을 한 후 프로퍼티를 선언합니다.
이런 식으로 [field: SerializeField]를 사용하면 프로퍼티도 인스펙터 창에 보여줄 수 있습니다.
(참고: Unity 2021 이상, C# 7.3 이상에서만 안정적으로 동작합니다.)
Result: 프로퍼티는 일반적인 방법으로 직렬화할 수 없기에 [field: SerializeField]를 사용하시는 것이 좋습니다.
'UnityEngine' 카테고리의 다른 글
| [Unity] 기즈모(Gizmos) 그리기 (0) | 2025.06.14 |
|---|---|
| [Unity] 전처리 지시문(Unity 용) (0) | 2025.06.13 |
| [Unity] PlayerPrefs (0) | 2025.06.10 |
| [Unity] 자연스러운 게임 오브젝트 화면 워프 (0) | 2025.06.09 |
| [Unity] Input Action 사용 (0) | 2025.06.06 |