다양한 코드를 보면서 [SerializeField]와 [HideInInspector]를 많이 보았었습니다.
그런데 그 당시에는 한번 유니티 따라서 코드를 해보면서 익숙해지자 그리고 흥미를 가져보자라는 생각이 커서
이것이 확실히 무엇을 의미하는지 생각하지 않고 잉? 뭐 이상한게 위에 있네? 이건 뭐지.. 이런 생각만 하고 넘어갔습니다.
그런데 지금 다른 사람들이 짰던 코드들을 보면서 나와서 아 저번에 미뤘는데 한번 공부하고 블로그에 포스팅을 해보자 생각이 들어서 지금 해보겠습니다.
[SerializeField]
일단 [SerializeFiled] 먼저 설명드리겠습니다.
아마 이 블로그까지 들어오셨고 이런게 궁금하신 분들은 아실 내용인데
public으로 만들어진 변수는 Inspector창에 나타나게 되고 private은 Inspector창에 뜨지 않습니다.
public은 Inspector창에서 쉽게 변경을 할 수 있습니다. 외부의 접근과 조작을 허용하는 것입니다.
하지만 public을 너무 많이 사용을 해서 모든 변수가 Inspector창에 나타나면 뭐가 뭔지 구분하기 힘들고 협업을 할 때에도 문제가 됩니다.
협업을 할 때에 이 값은 참조가 되서 변경이 되면 안되는데 다른 프로그래머가 참조를 해서 변경을 할 수 있기 때문입니다.
그렇다면 public의 장점인 Inspector에서 나타나는 점과 private의 참조를 못하는 특징을 사용하고 싶은데... 어떻게 하지?
다음과 같이 [SerializeField]를 사용하면 됩니다.
위에 예시를 보시면 hide는 private로 선언이 되어서 Inspector창에 보이지 않습니다.
하지만 HP는 private로 선언되었지만 Inspector창에 나타나는 것을 확인할 수 있습니다.
그리고 바로 밑에 AP는 Inspector창에 나타나지 않습니다. 이것으로 [SerializeField]는 바로 아래에 있는 변수만 Insecptor창에 나타나는 것을 알 수 있습니다.
이렇게 하면 Insepctor창에서 값을 바꿔가며 test를 할 수 있습니다.
[HideInInspector]
이것은 public변수를 Inspector에 보이지 않게하는 방법입니다.
다음과 같이 사용을 하고 동일하게 public int hi는 Inspector창에 나타나고
attack은 [HideInInspector]를 사용해서 Inspector창에 보이지 않습니다.
그리고 speed는 보이는 것으로 보아 [HideInInspector]도 바로 아래의 변수만 적용이 되는 것을 확인할 수 있습니다.
'Unity 게임 개발' 카테고리의 다른 글
Unity Object Pooling (0) | 2021.06.17 |
---|---|
C# Unity Delegate 설명 및 사용법 (0) | 2021.05.09 |
C# 추상메소드와 인터페이스 설명 (0) | 2021.04.14 |
Unity Mathf.Lerp 공부 (0) | 2021.03.29 |
Unity Time.realtimeSinceStartup 설명 및 공부 (0) | 2021.03.28 |