http://kimseunghyun76.tistory.com/194

http://programmingsource.tistory.com/18 


유니티에서도 안드로이드와 같이 생명 주기가 존재한다.


생명 주기(Life Cycle)이란, 유니티 내부에서 알아서 프로젝트 시작부터 종료까지 진행하는 흐름이다.


즉, 사용자가 직접 만들지 않아도 자동으로 호출되는 메소드가 존재한다.


예를 들면 Awake()와 Start() Update() 등등... 이 함수의 호출 흐름을 말한다.


먼저, 4가지 함수만 알아보자.

 

호출 순서


1. Awake() 

 

- 스크립트가 실행될 때 단 한번만 호출된다.

- 모든 오브젝트가 초기화된 후에 호출되기 때문에 GameObject.Find, GameObject.FindWithTag 등의 명령어들을 

   안전하게 사용할 수 있다.

- Awake 함수는 항상 Start() 함수 이전에 호출되므로 초기화 순서를 정할 수 있게 된다.

- 코루틴(Coroutine) 사용이 불가능하다.


2. OnEnable()


- 인스펙터뷰에서 게임오브젝트를 활성화/비활성화를 체크한다. 즉, 체크(활성화) 되었을 때 호출된다.

- 만약, 게임오브젝트를 껐다가 다시 켜면, Start()는 불리지 않으므로 작동이 되지 않는다.

- 활성화/비활성화를 사용하고자할 때, 이 함수에 활성화되었을 때 일어날 코드를 넣는다.


3. Start()


- Update() 함수가 호출되기 전에 한번만 호출된다.

- 다른 스크립트의 모든 Awake()가 실행이 끝난 이후에 실행된다.

- 스크립트가 활성화되어 있어야만 호출되어 실행된다.


4. Update()


- 매 프레임마다 호출되는 함수이며, 게임 로직에 핵심적으로 사용된다.

- 스크립트가 활성화 되어있어야 사용이 가능하다.

- 일시적으로 사용하지 않으면 불필요하게 성능저하 발생 가능성이 커진다.(매 프레임 반복 실행이므로 1초에 수십번..)



Posted by sungho88
,

엄청난 사실하나 알려드리려고 합니다.


왠만하면이 아니라 웬만하면이 표준어라고 합니다.


놀랍지 않습니까? 


...저만 놀란건가요!? 


왠만하면으로 알고 있었는데...


글쓸 일이 없으니 말할때는 모르던 국어.


한국인이니 한국어는 알아야하지 않겠습니까?


ㄴㅔ이버 사전 한 번 봅시다!




Posted by sungho88
,

매번 아무 생각없이 사용하던 GameObject와 gameObject의 차이점에 대해 생각해보게 되었다.


확실하게 알고 넘어가자.


GameObject의 특성


- GameObject는 클래스이다. 객체가 아니다.


- Hierarchy 창에 계층구조를 이루는 게임 오브젝트 객체들을 의미한다.


- 유니티에서 기본적으로 제공되는 객체는 GameObject가 기본이다.


- 게임오브젝트는 게임을 구성하는 모든 요소(눈에 보이지 않는 카메라, 빛 포함)를 뜻한다.


- 스크립트에서 GameObject를 쓰는 이유는 다른 게임오브젝트를 호출하기 위함이다.



gameObject의 특성


- gameObject는 클래스가 아니다. 객체이다.


C# 스크립트 생성후 유니티 Hierarchy내 임의의 게임오브젝트로 스크립트를 Add Component하는데,  

이 과정은 일반적인 객체 생성 과정인  GameObject gameObject = new GameObject(); 

명령어를 자동 선언한 것이나 마찬가지이므로 선언하지 않아도 gameObject는 스크립트로 바로 참조가 가능하다.


쉽게 말하면, 해당 컴포넌트에 할당된 자기 자신이다.


만약 Player라는 게임오브젝트 내 스크립트에 gameObject를 썼다면 Player의 컴포넌트를 조작하는데 사용될 것이다.


- 스크립트에서 gameObject를 사용하면, 해당 게임 오브젝트를 호출한다.


좀 더  디테일한 차이점이 있을 것 같지만, 일단 간략하고 대표적인 차이점은



어떤 GameObject에 Attached된 스크립트 안의 


gameObject는 항상 '해당 GameObject 자신'이고, 

GameObject는 '해당 GameObject 자신'일지 아닐지 모른다.


좀 더 정리가 필요하다.. 아직 명확하지 않다. 뭔가 헷갈린다.

Posted by sungho88
,