유니티 1일차] 유니티 3D 기본 함수 정리
유니티(Unity)/Study 2018. 7. 9. 15:12 |MonoBehaviour
- 정의 : Unity의 모든 스크립트가 상속 받는 기본 클래스.
JavaScript는 자동으로 MonoBehaviour을 상속을 받고, C# Boo의 경우 명시적으로 상속받아야 한다. C# Boo에서 단순 데이터를 보관용 클래스, 전역으로 동작하는 매니저 클래스 같은 건 상속 받지 않고 쓸 수가 있다.
- 목적 : 사용자가 Unity 엔진의 작동 방식을 이해하지 못하더라도 코드를 작성할 수 있도록 이미 만들어진 Behaviour 클래스. 즉 사용자가 쉽게 호출할 수 있는 스크립트 명명들의 집합을 제공하는 것.
LifeCycle
Reset
- Reset은 스크립트의 프로퍼티를 초기화하기 위해 호출되며, 스크립트가 오브젝트에 최초로 부착되었을 때나 Reset 커맨드가 사용된 경우에 호출된다.
- 함수는 에디터 모드에서만 호출됩니다.
Awake
- 씬이 시작하면 호출된다. 씬 내부의 각 객체 당 한번 호출된다.
- 활성화/비활성화와 관계없이 스크립트의 Instance 내에서 단 한번 호출된다.
- 언제나 모든 Start함수 이전에 호출되며, Prefab이 Instance된 직후에 호출된다.
- 씬이 시작할 때 GameObject가 비활성화 상태이면 Awake는 호출되지 않는다.
즉, GameObject가 활성화되어 있을 때나 부착한 스크립트가 별도로 호출되어야만 해당 스크립트의 Awake가 호출된다.
- Awake 함수는 coroutine 으로 동작할 수 없습니다.
OnEnble
- 객체가 활성화 되어 있을 때만 호출되며, Object가 활설화된 직후
즉, MonoBehaviour의 Instance 직후 호출된다.
- Coroutine으로 호출될 수 없다.
Start
- 스크립트의 인스턴스에 걸쳐 단 한 번만 호출된다.
- 스크립트가 활성화되어 있을 때에만 호출된다.
Update
- MonoBehaviour가 활성화된 경우 매 프레임마다 호출된다.
- 스크립트에서 가장 빈번하게 사용되는 함수
FixedUpdate
- MonoBehaviour가 활성화된 경우 매 고정 프레임 레이트 프레임마다 호출된다.
- Rigidbody를 다루는 경우 Update 대신 쓰인다.
LateUpdate
- Update 이후에 호출되며, 호출 순서 상 다른 Update에 비해 나중에 호출되어야 할 작업들이 추가된다.
- 스크립트의 실행 순서를 정하는 것에 도움이 됩니다.
On ~ 계열 함수 군
OnMouse~
- 마우스와 GUIElement, Collider 사이의 인터렉션에 관련된 함수의 집합
- 게임 오브젝트가 Ignore Raycast 레이어에 속해있으면 호출되지 않습니다
- co-routine 으로 사용할 수 있습니다.
- 함수에 의한 이벤트는 GUIElement, Collider에 붙어 있는 모든 스크립트에 전달 됩니다.
OnMouseEnter
- 마우스가 처음 오브젝트 위로 올라왔을 때 호출.
OnMouseOver
- 마우스가 오브젝트 위에 있을 경우 매 프레임마다 호출.
OnMouseExit
- 마우스가 처음 오브젝트 밖으로 나갔을 때 호출.
OnMouseDown
- 오브젝트 위에서 마우스 버튼을 눌렀을 때 호출.
OnMouseUp
- 오브젝트 위에서 마우스 버튼을 땠을 때 호출.눌렀을 때의 오브젝트와 같은 오브젝트일 때만 호출됨.
OnMouseDrag
- 오브젝트 위에서 마우스 버튼을 누른 상태로 있을 때 매 프레임마다 호출.
OnTrigger~(other : Collider), OnCollision~(collisionInfo : Collision) 함수
- OnTrigger~, OnCollision~ 은 모두 충돌 관련 함수
- 두 오브젝트 모두 Collider 를 가지고 있고 둘 중 하나는 Rigidbody 를 가진 경우만 충돌 이벤트가 발생한다.
- Rigidbody 를 가진 쪽이 움직여서 서로 만날 경우와 둘다 이동해서 만날 경우 에 이벤트가 발생한다.
- Trigger 는 Inspector 창에서 Collider 의 Is Trigger 속성이 켜져있을 때 에만 발생 한다.
- Trigger 가 체크되어 있을 경우 에 Collision 관련 함수는 호출되지 않습니다.
- Trigger 가 체크되어 있을 경우에 두 오브젝트 사이에 물리 계산이 이루어지지 않습니다.
- Collision 은 두 오브젝트 중 적어도 하나가 Inspector 창에서Rigidbody 의 Is Kinematic 속성이 꺼져있을 때 발생합니다.
- 두 오브젝트 모두 Kinematic 속성이 켜져있으면 어느 쪽이 움직여서 겹치더라도 물리 연산이 이루어지지 않기 때문에 충돌 함수가 호출되지 않습니다.
- Trigger 는 함수의 파라메터로 Collider 변수를 받습니다.
- Collision 은 함수의 파라메터로 Collision 변수를 받습니다
- 두 종류의 함수 모두 ~Enter, ~Stay, ~Exit 함수를 제공합니다
Enter 는 접촉을 시작했을 때 호출,
Stay 는 접촉 중일 때 매 프레임마다 호출,
Exit 는 접촉이 끝났을 때 호출됩니다.
relativeVelocity
- 두 오브젝트의 상대 속도입니다. (읽기)
rigidbody
- 자신과 접촉한 Rigidbody 입니다.만약 상대가 Rigidbody 가 없는 Collider 라면 이 값은 null 입니다. (읽기)
collider
- 자신과 접촉한 Collider 입니다. (읽기)
transform
- 자신과 접촉한 오브젝트의 Transform 정보입니다. (읽기)
gameObject
- 자신과 접촉한 오브젝트입니다. (읽기)
contacts
- 물리 엔진에서 연산한 접촉 포인트 정보입니다. ContactPoint 의 배열입니다.
OnWillRenderObject
- 해당 오브젝트를 렌더링하는 카메라마다 한 번 호출됩니다.
- 이 함수는 렌더링하기 전, 컬링 중에 호출됩니다.
- Camera.current 를 사용하면 현재 어떤 카메라가 렌더링할 것인지 알 수 있습니다.
OnPreCull
- 카메라에서 장면을 컬링하기 전에 호출됩니다.
- 카메라에 붙어있는 스크립트에만 호출됩니다.
- 카메라의 속성을 바꾸고 싶을 때, 이 함수 안에서 하면 좋습니다.
- 이 함수가 호출된 후 실제 프러스텀 컬링을 하고 각 오브젝트가 화면에 그려질지 그려지지 않을지 정해집니다.
OnBecameVisible / OnBecameInvisible
- renderer 가 어떤 카메라에 보이기 시작할 때, 보이지 않기 시작할 때 호출됩니다.
- renderer 에 붙어있는 모든 스크립트에 호출됩니다.
- 화면에 보일 때만 스크립트가 처리되도록 할 때 유용합니다.
- yield 사용 가능합니다.
// 화면에 보일 때만 스크립트 활성화.
function OnBecameVisible ()
{
enabled = true;
}
function OnBecameInvisible()
{
enabled = false;
}
OnPreRender
- 카메라가 장면을 렌더링하기 전에 호출됩니다.
- 카메라에 붙어있는 스크립트에만 호출됩니다.
- yield 사용 가능합니다.
OnRenderObject(queueIndex:int)
- 오브젝트가 렌더링될 때 호출됩니다.
- OnWillRenderObject 함수처럼 각 카메라가 그릴 때마다 한 번 호출됩니다.
OnPostRender
- 카메라가 장면을 렌더링한 후 호출됩니다.
- 카메라에 붙어있는 스크립트에만 호출됩니다.
- yield 사용 가능합니다.
- 해당 카메라가 모든 오브젝트를 렌더링한 후 호출됩니다.
OnRenderImage(source:RenderTexture, destination:RenderTexture)
- 모든 렌더링이 끝난 후 호출됩니다.
- 카메라에 붙어있는 모든 스크립트에서 호출됩니다.
- 포스트 프로세스 효과를 줄 때 사용합니다. (Pro 전용)
OnDrawGizmos
- 게임 오브젝트에 기즈모를 추가합니다.
OnGUI
-GUI 이벤트에 따라 호출되는 함수.
-GUI 이벤트가 발생활 때마다 호출되기 때문에 1프레임 당 여러 번 호출될 수 있다.
OnApplicationPause(pause:bool)
- 플레이어가 정지/재개될 때 모든 스크립트에서 호출됩니다. yield 사용 가능합니다.
OnApplicationQuit
- 어플리케이션이 종료되기 직전에 모든 스크립트에서 호출됩니다.
'유니티(Unity) > Study' 카테고리의 다른 글
[유니티 6일차] 유니티 구이 2 (0) | 2018.07.17 |
---|---|
유니티 5일차] 유니티 GUI - 1 (0) | 2018.07.16 |
유니티 4일차] Time.deltaTime (0) | 2018.07.13 |
유니티 3일차] 캐릭터 이동 (0) | 2018.07.11 |
유니티 2일차] 기본 유니티 제공함수와 기본적인 컴포넌트 (0) | 2018.07.10 |