유니티(Unity)

[Unity 기초 - C#] SerializeField, HideInInspector 를 왜 쓸까?

호호라 2022. 9. 10. 19:20

기본 개념, 용어도 익히지 않은 채로 무작정 유니티로 게임 개발 따라하기를 하고 있다.

개념부터 잡고 가기엔 너무 지칠 것 같아서 무작정 진행하면서 새로운 모르는 개념들을 하나씩 정리해보려고 한다.

 

# C# 스크립트에서 [SerializeField]는 왜 쓸까?


# SerializeField 란?

 : 유니티 에디터의 Inspector(인스펙터) 창에서 수정가능하도록 변수를 노출시켜준다.

 

[SerializeField] 로 명시하지 않고, public 변수로 선언해도 Inspector(인스펙터) 창에 노출된다.

다만 둘의 차이는, public으로 선언한 변수는 다른 스크립트에서도 접근이 가능하게 되어 수정될 수 있다.

 

다른 스크립트에서는 접근 및 수정 불가능하게 하고싶지만 자주 변경할 필요가 있는 변수는

private으로 선언하되 SerializeField를 명시하여 사용하면 된다.

 

※ [SerializeFiled] 키워드 바로 뒤의 하나의 변수에만 적용되기 때문에 원하는 변수 선언 전에 매번 키워드를 써줘야한다.

 

# Serializable 란?

 : [SerializeField]와 동일한 기능을 하지만, class나 structure 등에는 [Serializable] 키워드를 사용한다.

 

 

    < 왼쪽 : C# 스크립트                                              /                                                  오른쪽 : 유니티에디터의 Inspector 창 >

 

# HideInInspector 란?

 : [SerializeField]와 반대의 기능을 가진 키워드이다.

public으로 선언한 변수도 Inspector에서 수정할 수 없게 한다.

public이기 때문에 다른 스크립트에서는 접근 가능하다.

 

 

 

★ 별첨 ★

내가 선언한 변수랑 Inspector에서 노출되는 변수가 미묘하게 달라서 네이밍룰 별로 테스트를 해보았다.

(위의 캡쳐화면의 초록색 밑줄 참고)

 

하나는 camelCase로 objCount로 선언하고,

다른 하나는 snake_case로 obj_count로 선언해보았다.

 

오른쪽 Inspector 창에서 확인해보니,

objCount -> Obj Count

obj_count -> Obj_count 로 보여졌다.

camel case만 인식해서 자동으로 단어사이를 띄어쓰기해서 앞글자 대문자로 보여주는 것 같다.

 

유니티의 c# 에서 지향하는 네이밍룰은 camelCase일 것 같은 느낌이지만...

인스펙터 창에서 내가 쓴 변수명과 동일하게 보고싶다면 snake_case를 추천하고

좀 더 읽기 쉽게 보여지길 원하면 camelCase를 추천한다.

 

 

 

 

※ 이 포스팅은 인프런 유니티 강좌(따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 02)를 따라 실습하면서생소한 개념에 대해 정리하는 중입니다.

초보자가 정리하는 글이여서 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하겠습니다:)