본문 바로가기
프로그래밍 이야기/GameDev

[Unity] 변수

by Mulder5 2021. 2. 1.
반응형

변수 1 - Inspector View의 사용

변수를 선언할 때는 public을 사용해도 되고, SerializeField 키워드를 사용할 수도 있다. 그런데 SerializeField를 사용하면 Editor에서도 값을 넣어줄 수 있는 특별한 편리함을 누릴 수 있다. 특별히 Editor에서 감출 필요가 없다면 SerializeField를 사용하여 편리하게 Editor에서도 값을 넣어 사용하자.

Unity Engine 스크립트 코드 상의 변수와 인스펙터 뷰에서 보이는 변수의 이름은 차이가 있을 수 있다. 예를 들면 다은과 같은 변수들이 선언 되었다고 하자.

[SerializeField]
 int myValue;

 [SerializeField]
 int MyValue2;

 [SerializeField]
 int m_myValue3;

이 변수들이 Unity Engine의 Inspector Viwe에는 다음과 같이 보인다.

우선 첫 글자가 대문자로 바뀌었고, 소문자에서 대문자로 바뀔 때 띄어쓰기가 되었다. 그리고 문자 형식이 달라질 때도 띄어쓰기가 되었다. 아마도 Editor를 사용자의 편의(가독성)를 위해서 글자 변환이 일어났을 것이다. 이러한 변환을 감안하여 변수 선언을 해야 한다. 특히 Unity를 위한 코딩 시에는 변수 타입을 첫 글자로 사용하는 헝가리안 표기법은 사용하지 않는 것이 좋겠다. 

변수 2 - 초기화

변수의 초기화는 어디서 해야 할까? 다음과 같이 소스코드에서도 초기화를 하고 Inspector에도 값을 넣어주면 이 변수는 어떤 값을 갖게 될까?

[SerializeField]
int myValue = 3;

소스코드에서는 3, 인스펙터에서는 5를 넣었다.

결과는 5이다. 즉 인스펙터 값이 소스코드 값에 덮어쓰기 되었다. 그러므로 값을 인스펙터 보다 우선하여 소스코드에서 값을 초기 활 할 필요가 있을 때는 선언부가 아닌 Start()나 Awake()에서 초기화하는 것이 좋다. 

 

반응형