본문 바로가기
Unity/02.Scripting

Variables (변수), Functions (함수), Classes (클래스)

by 레드아이™ 2020. 8. 2.

Variables(변수): Object의 값이나 Object의 참조에 해당. (소문자로 시작)

 

Script 상단에 변수를 선언하는 것으로 시작. public 혹은 private 변수로 선언하고, 뒤에 유형과 변수 이름이 부여됨.

Variables in Unity

public 변수: 스트립트에서 정의후에 Unity Inspector뷰에서 접근이 가능. 다른 Object에서도 접근 가능. 단, 문제가 생길 경우 코드베이스 전체를 살펴보고 문제의 위치를 찾아야 하는 단점이 있음.

Demo script Unity Inspector

private 변수: 해당 script 및 해당 class를 통해서만 접근 가능. 코드를 좀 더 깔끔하게 할 수 있고, 디버깅과 유지관리가 쉬워지는 장점이 있음. 단, Inspector 뷰를 Debug 모드로 바꾸면 Run mode시 확인가능.

 

변수를 정의할 때 중요한 또 한가지 요소는 Type이다. Type은 변수가 메모리에 포함하는 값의 종류를 정의한다. (위의 이미지에서 myLight 변수는 Light 타입으로 정의 됨)

변수의 이름은 숫자로 시작하거나 공백을 포함 할 수 없음. (예: myLight)


Functions(기능)변수들을 조정하는 코드. Function은 대문자로 이름이 시작됨.

 

Unity에서는 아래와 같이 자동으로 실행되는 Function이 있음.

Functions in Unity

Awake: GameObject가 활성화될 때 한 번만 호출. GameObject가 비활성화 상태인 경우 활성화될 때까지 호출되지 않지만, GameObject는 활성화/Component는 비활성화 일 경우에도 호출됨.

 

Start: GameObject가 활성화되면 호출되나, Awake와는 달리, Component가 활성화 되어야 호출됨

 

Update: Frame당 한 번 호출됨. 애니메이션이나 Ai, input detection 등 계속해서 작동해야 되는 로직을 정의. Frame당 수행하는 로직이 오래 걸리면 Update 주기가 달라짐.

 

FixedUpdate: Update와 비슷하나, 고정된 주기(0.02초) 마다 호출됨.

 

LateUpdate: Update와 비슷하나, 프레임 끝에 호출되는 함수. (예: 게임 캐릭터를 이동시키려는데 다른 캐릭터와 부딪혀 의도하지 않은 위치로 움직이는 경우, 카메라를 캐릭터와 동시에 움직이면 흔들림이 발생하고 카메라가 원래 있어야 할 자리로 이동하지 않는 경우에 유용하게 사용됨) 별도의 Loop 처럼 작동하여 유용하게 사용될 수 있음.

함수는 대문자로 시작하며, 함수의 맨 앞 부분에 반환된 함수 유형을 기입하고, 함수의 이름과 괄호 안의 매개변수(있는 경우) 순으로 작성한다.

함수는 일반적으로 계산을 수행한 후, 값을 반환한다. 단, 함수 앞에 void 타입을 선언하면 아무것도 반환되지 않는다.


Classes(클래스): 변수와 함수의 집합. Class의 이름과 C# 스크립트의 파일 이름은 반드시 일치해야 함.

Custom class를 생성했을 경우, [System.Serializable]을 입력하여 클래스를 직렬화해야, Unity가 Inspector 뷰에서 살펴볼 수 있는 단순한 데이터로 전환한다.

 

 

 

 

출처: unity3d.com/learning-c-sharp-in-unity-for-beginners

댓글