본문 바로가기

TOOL/Unity

Mono / Mono Behaviour

Mono 


Mono는 .NET Framework의 open source platform으로서 cross-platform application의 개발을 지원한다.

C# 과 CLI에 기반을 두고있다.



Unity의 Mono


Unity Scripting system의 기반이다.

.NET에 깁나하지만 다른 여러 프로그래밍 언어를 지원하는 .NET과 달리 C#, Boo, Javascript만 지원한다.



Scripting Language


Scripting Language 혹은 extension language는 하나 이상의 application에서 script를 지원하는 프로그래밍의 부분집합(Subset)이다.



Script


Script는 Application의 core code와는 별개의 언어로서 최종 사용자에 의해 작성되거나 최소한으로 수정되는(least modified) program이다.

Script는 대게 source code나 byte code로부터 해석되며, 이는 application이 native machine code(기계어)나 IL로 compiled 되는것과 구분한다.





MonoBehaviour


Unity의 모든 script가 상속받는 class, 미리 만들어둔 class이자 script 명령어들의 집합이다.


사용자가 Unity Engine의 작동방식을 이해하지 못하더라도 code를 작성할 수 있도록 이미 built-in(만들어진) Bahaviour class

즉 사용자가 쉽게 호출할 수 있는 scripting instruction(스크립트 명령)들의 집합을 제공하는것



callback


Script는 게임 내내 unity engine에 의해 invoke(호출)되는 callback method를 갖게 된다.



상속구조





MonoBehaviour의 주요 method



Rest


Rest는 script property를 초기화하기 위해 호출되며, script가 object에 최초로 attached(부착)되었을 때와 Reset commend가 사용된 경우에 호출


Awake


Scene이 시작하면 호출된다.

Scene내부의 각 object당 한번만 호출된다.

언제나 start method이전에 호출되며, prefeb이 instance된 직후에 호출된다.

Scene이 시작할 때 GameObject가 비활송화 상태이면 Awake는 호출되지 않는다. 

즉 GameObject가 활성화 되어 있을때나 부착한 script가 별도로 호출이 되어야만 해당 script의 awake가 호출된다.


OnEnable


Object가 active되어 있을때만 호출되며, object가 active된 직후, 즉 MonoBehaviour의 instance 직후 호출된다.

Coroutine으로 호출될 수 없다.


Start


Script의 instance에 걸쳐 단 한번만 호출된다.

Script가 active되어 있을 때만 호출된다.


Update


MonoBehaviour가 active된 경우 every frame마다 호출된다.


Fixed Update


MonoBehaviour가 active된 경우 every fixed framerate frame(고정 프레임레이트 프레임)마다 호출된다.

Rigidbody를 다루는 경우 Update 대신 사용된다.


Last Update


Update 이후에 호출되며 호출순서상 다른 Update에 비해 나중에 호출되어야 할 작업들이 추가된다.


OnGUI


GUI event에 따라 호출되는 method

GUI event가 발행할 때 마다 호출되기 때문에 1 frame당 여러번 호출될 수 있다.


Manager


Current scene의 GameObject들을 관리하는 관리자



랜더링 루프













참고

https://hmjo.tistory.com/204


'TOOL > Unity' 카테고리의 다른 글

Unity CG / Boehm-Demer-Weiser / 점진적 GC  (0) 2019.03.05
Unity Heap Memory 구조  (0) 2019.03.05
IL2CPP / GCC / C# C++ Assembly 변환과정  (0) 2019.03.05
Asset Bundle Manager  (0) 2019.02.27
Asset bundle 사용법  (0) 2019.02.27