본문 바로가기

Unity 공부시작

유니티 :: 이벤트 함수

< 이벤트 함수 >


 이벤트 함수란, 호출되지 않아도 만들어져만 있다면 자동으로 실행되는 함수로, 호출되는 시점이 정해져 있는 함수들이다.





1. Reset() : 에디터에서 처음 연결될 때, 혹은 Reset 명령을 실행했을 때 호출


2. Awake() : Start 함수 이전, 혹은 활성화 직후에 호출되는 함수


3. OnEnable / OnDisable : 활성화 / 비 활성화할 때마다 호출


OnEnable의 경우 Start 이전, Awake 후에 호출되는 함수이다.


순서) Awake() -> OnEnable() -> Start()


4. OnCollisionXXX 와 OnTriggerXXX 의 차이는 물리적 연산을 하는 지 여부에 있다.


OnColiision의 경우 물리적 연산이 작용된다.


OnCollisionStay의 경우 충돌 중 계속해서 호출되는데, 일정 시간 이후에 호출이 되지 않는 경우가 있다.


이는 Rigidbody 컴포넌트를 지닌 오브젝트가 일정시간 움직임이 없다면 sleep 모드에 들어가기 때문이다.


sleep mode를 원하지 않는다면 Rigidbody의 Sleeping Mode를 Never Sleep으로 바꾸어주면 된다.


5. OnMouseXXX


* Collider가 있어야 호출이 가능하며 터치도 가능하다.


OnMouseDown : 클릭하는 순간 호출


OnMouseUp : 눌렀다 떼는 순간 호출


OnMouseDrag : 누르는 중 호출


6. FixedUpdate()


Update()가 매 프레임마다 실행되는 함수라면, FixedUpdate는 일정 '시간'마다 호출되는 함수이다.


기기의 성능에 따라 프레임이 달라지므로, 정확한 시간을 기준으로 함수를 실행시키려면 FixedUpdate를 사용하면 된다.


기본적으로 0.02초로 설정되어 있는데, Edit -> Project Settings -> Time -> Fixed Timestep 값 변경 을 통해 설정할 수 있다.


7. LateUpdate()


매 프레임마다 실행된다는 점에서 Update()와 같지만, Update()가 실행되고 나서 호출되는 함수이다.


오브젝트들이 이동한 뒤에 카메라가 뒤따라 이동하는 경우, 즉 카메라의 이동에 주로 사용되는 함수이다.


8. OnBecameVisible() / OnBecameInvisible() 


오브젝트가 카메라에 나오거나, 나오지 않을 경우 실행되는 함수


이 함수가 내가 원하는대로 작동이 되지 않을 수 있다. 분명 Game 뷰에는 없는데도 OnBecameVisible()이 호출되는 경우가 있는데,


이는 Scene 뷰 때문일 수 있다. Play할 때 Scene을 카메라에 맞춰 축소시키거나 Scene 뷰를 끄고 Game 뷰로만


확인하면 된다.