하도 사람들이 쓰긴 하는데 잘 모른다? 그치?
그래서 알아보자
유니티에서 변수를 선언할 때 public이나 private 같은 접근제한을 선언하고는 한다.
++ protected도 있긴 하다.
접근 제한자는 왼쪽 링크에서 따로 다뤄보자.
그리고 public을 썼을 때 인스펙터 창에서 접근할 수 있다.
또한 public으로 선언하면 다른 스크립트에서 접근가능하다.
그런데 왜 만들었냐면?
외부 스크립트에서 수정을 못하게, 참조할 필요도 없는 변수를 접근해서 쓸데 없는 상황을 만들지 않기 위해!!!
인스펙터에서 접근 가능하지만 외부 스크립트에서 접근이 불가능하게 막으려고 한다.
그래서 SerializeField를 쓴다.
private 변수를 인스펙터에서 접근가능하게 해주는 기능으로
원하는 변수 앞에 [SerializeField]를 붙인다.
일반적으로 인스펙터에서 자주 변경해야 하는 private 변수에 쓰인다.
private변수지만 inspector 접근가능하다.
***즉 게임오브젝트나 컴포넌트들을 연결할 때 인스펙터에서만 관리하게 하는 것이다.
inspector는 얘를 말한다.
** 다만
사실 이해를 위해서.. 살짝 적었지만
Serialize는 직렬화라는 작업을 하는 것이다.
**직렬화라는 것은 쉽게 말하면 추상적인 데이터를 전송 가능하고 저장 가능한 형태로 바꾸는 것을 의미한다.
**역직렬화는 그 역순이며 추상적인 데이터를 재조립한다고 보면 된다.
EX,이진으로 데이터를 저장하는 방식과 비슷하다.
유니티가 private 필드를 직렬화(Serialization)하도록 설정하는 것이다.
사실 유니티는 public 데이터만 직렬화하는데 Serialize를 선언함으로써 private도 직렬화가 되는 것이다.
때문에 우리가 인스펙터창에서 수정한 것이 저장되어 남아있는 이유도? 직렬화가 되어서 그렇다고 보면 된다.
참고링크
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
Play 중인지 아닌지 쉽게 구별하기, Preferences[Unity] (2) | 2021.02.23 |
---|---|
카메라 플레이어에게 고정하기, Unity 3D (0) | 2021.02.23 |
[Unity] 2D에서 충돌하면 떨어뜨리기 (0) | 2020.03.29 |
[Unity] 2D에서 자석 구현하기 !! (6) | 2020.03.13 |
[Unity] 가상패드 만들고 가상패드에서 벡터 가져오기 (0) | 2020.03.01 |