TIL

SerializeField 와 HideInInspector의 용도

박민혁_kog 2023. 9. 21. 16:35

 

[SerializeField]

public으로 만들어진 변수는 Inspector창에 나타나게 되고 private은 Inspector창에 뜨지 않는다

 

public은 Inspector창에서 쉽게 변경을 할 수 있습니다. 외부의 접근과 조작을 허용하는 것입니다.

하지만 public을 너무 많이 사용을 해서 모든 변수가 Inspector창에 나타나면 뭐가 뭔지 구분하기 힘들고 협업을 할 때에도 문제가 됩니다.

협업을 할 때에 이 값은 참조가 되서 변경이 되면 안되는데 참조를 해서 변경을 할 수 있기 때문입니다.

그렇다면 public의 장점인 Inspector에서 나타나는 점과 private의 참조를 못하는 특징을 사용하고 싶을때 사용합니다.

다음과 같이 [SerializeField]를 사용하면 됩니다.

위에 예시를 보시면 hide는 private로 선언이 되어서 Inspector창에 보이지 않습니다

하지만 HP는 private로 선언되었지만 Inspector창에 나타나는 것을 확인할 수 있습니다.

그리고 바로 밑에 AP는 Inspector창에 나타나지 않습니다. 이것으로 [SerializeField]는 바로 아래에 있는 변수만 Insecptor창에 나타나는 것을 알 수 있습니다.(이미지와 달리 같은 줄 에 쓰는게 더 직관적 이다.)

이렇게 하면 Insepctor창에서 값을 바꿀수 있다

[HideInInspector]

이것은 public변수를 Inspector에 보이지 않게하는 방법입니다.

프라이빗을 보이게 하는것 처럼 퍼블릭을 보이지 않게 한다

 

다음과 같이 사용을 하고 동일하게 public int hi는 Inspector창에 나타나고

attack은 [HideInInspector]를 사용해서 Inspector창에 보이지 않습니다.

그리고 speed는 보이는 것으로 보아 [HideInInspector]도 바로 아래의 변수만 적용이 되는 것을 확인할 수 있습니다.

 

결론 

[SerializeField] : 프라이빗을 인스펙터에 보여줌

[HideInInspector]:퍼블릭을 인스펙터에 안보여줌