차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
unity:executionorder [2015/08/30 08:44] V_Lunity:executionorder [2022/01/02 15:29] (현재) – [실행 순서 (Execution Order)] 61.74.132.138
줄 1: 줄 1:
-======Execution Order====== +{{tag>유니티 unity 코루틴 협동동루틴}} 
-Unity 스크립팅에서 스크립트가 실행되는 것처럼 미리 정해진 순서대로 실행되는 많은 이벤트 함수가 있습니다. 이 실행 순서는 아래에서 설명됩니다:+======실행 순서 (Execution Order)====== 
 +Unity 스크립팅에서 스크립트는 미리 정해진 순서대로 실행다.
  
-======First Scene Load====== 
-이러한 함수는 씬이 시작될 때 불려집니다 (씬에서 각 물체를 위해서 한 번). 
-  * __Awake:__ 이 함수는 모든 시작 함수전에 불려지고 prefab이 객체화된 후에 불려집니다.  
-  * __OnEnable:__ (물체가 활성화될 때만 불려집니다) : 이 함수는 물체가 활성화된 후에 불려집니다. 
  
-======Before the first frame update====== +=====First Scene Load===== 
-  * __Start:__ 스크립트 인스턴스가 활성화될 때만 첫 번째 프레임 업데트 전에 Start가 불려집니다.+이러한 함수는 씬이 시작될 때 불려진다 (씬에서 각 물체를 위해서 한 번). 
 +  * __Awake:__ 이 함수는 모든 시작 함수전에 불려지고 prefab이 객체화된 후에 불려진다.  
 +  * __OnEnable:__ (물체가 활성화될 때만 불려진다) : 이 함수는 물체가 활성화된 후에 불려다.
  
-======Update Order====== +=====Before the first frame update===== 
-사용자가 임 로직과 상호 작용, 애니메션, 카메라 위치 등을 계속 랙할 때 사용자가 사용할 수 있는 몇 가지 다른 이벤트가 있습니다. 공통적인 패턴은 //Update()//함수서 대부분의 태스크를 실행한다는 것입니다. 그러나 사용자가 사용할 수 있는 다른 함수들도 있습니다.+  * __Start:__ 스크립트 인스턴스가 활성화될 때만 첫 번째 프레임 업데이트 에 Start가 불려진다.
  
-  * __FixedUpdate:__ //FixedUpdate()//은 //Update()//보다 더 주 불려집다. 프레임 레이트가 낮으면 프레임마다 여러번 불려질 수 있고 프레임 레이트가 높다면 프레임 사이에서 한 번도 불려지지 않을 지도 모릅니다. 모든 물리적인 계산과 업데이트는 //FixedUpdate()// 이후에 직접적으로 일어납니다. //FixedUpdate()// 내부로 움직임 계산이 적용될 때, 사용자는 //Time.deltaTime//에 의하여 사용자의 값을 곱할 필요가 없습니. 이것은//FixedUpdate()//가 신뢰는 타이머에서 불려지고 프레임 레이트에 독립적이기 때문입니다.+=====Update Order===== 
 +사용가 게임 로직과 상호 작용, 애션, 카메라 위치 등을 계속 랙할 때 사용자가 사용할 수 있는 몇 가지 다른 트가 다. 공통적인 패턴은 //Update()//함수서 대부분의 태스크를 실행한는 것임그러나 사용자가 사용할 수 있는 른 함수들도 있다.
  
-  * __Update:__ //Update()//는 프레임마다 한 번 불려집니다. 그것은 프레임 업데이트를 위한 주요 함수 입니다. 
  
-  * __LateUpdate:__ //LateUpdate()//는 //Update()//가 끝난 후에 프레임마다 한 번 불려집니다. //Update()//에서 수행되는 모든 계산은 //LateUpdate()//이 시작할 때 끝날 것입니다. //LateUpdate()//를 위한 공통적인 사용은 음의 3인칭 카메라일 것입니다. 사용자가 사용자의 캐릭터를 움직이고 //Update()// 내부에서 돌게 한다면 사용는 모든 카메라 움직임과 회전 계산을//LateUpdate()//에서 행할 수 있습니다. 은 캐릭터가 카메라가 그것의 위치를 트랙하기 전에 완전히 움직인다는 것을 확실시 할 것입니다.+  * __Update:__ //Update()//는 프레임마다 한 번 불려다. 그것은 프레임 업데를 위한 주요 함수 임. 스크립트가 enabled 상태일때, 매 프레임마다 호출됩니다. 일반적으로 장 빈번하게 사용는 수이며, 물리 효과가 적용되지 않은 오브젝트의 움직임이나 단순한 타이머, 키 력을 받을 때 사용됩니다.
  
  
-======Rendering====== +  __FixedUpdate:__ //FixedUpdate()//은 //Update()//보다 더 자주 불려다. 프레임 레트가 낮으면 프레임마다 여러번 불려질 수 있고 프레임 레이트가 높면 프레임 사서 한 번도 불려지지 않을 지도 모릅니다. 모든 물리적인 계산과 업데이트는 //FixedUpdate()// 이후에 직접적으로 일어난다. //FixedUpdate()// 내부로 움직임 계산이 적용될 때, 사용자는 //Time.deltaTime//에 의하여 사용자의 값을 곱할 필요가 없다. 은//FixedUpdate()//가 신뢰있는 타머에서 불려지고 프레임 레이트에 독립적이기 때문임. (Update는 불규칙한 호출임으로 엔진 충돌검사 등이 제대로 안될 수 있음)
-  __OnPreCull:__ 카메라가 씬을 추려내기 전에 불려집니다. Culling은 어떤 물체가 카메라에 일지를 결정합니. Culling일 일어나기 전에OnPreCull이 불려집니다. +
-  * __OnBecameVisible/OnBecameInvisible:__ 물체가 카메라에 보거나/보이지 않게 될 때 불려집니+
-  * __OnWillRenderObject:__ 물체가 보면 각 카메라를 위해서 __한 번__ 불려집니다. +
-  * __OnPreRender:__ 카메라가 씬을 렌더링하는 것을 시작하기 전에 불려집니다. +
-  * __OnRenderObject:__ 모든 보통 씬 렌더링이 끝난 후에 불려집니다. 사용자는 이 시점에 사용자 의 기하를 그리기 위해 GL 클래스 또는 Graphics.DrawMeshNow를 사용할 수 있습니다. +
-  * __OnPostRender:__ 카메라가 씬을 렌더링하는 을 끝낸 후에 불려집니다. +
-  * __OnRenderImage(Pro only):__ 스크린 미지의 포스트 프로세싱을 허용하기 위해서 씬 렌더링이 완전해진 후에 불려집니다. +
-  * __OnGUI:__ GUI 이벤트에 대한 응답으로서 프레임당 여러번 불려집니다. 각 입력 이벤트를 위한 레이아웃과 키보드/마우스 이벤트에 의해 따라오는 레아웃과 다시 그리기 이벤트는 처음에 프로세스 됩니다. +
-  * __OnDrawGizmos__ 시각화 목적으로 씬 뷰에서 기즈모를 그기 위해 용됩니다..+
  
-======Coroutine====== +  * __LateUpdate:__ //LateUpdate()//는 //Update()//가 끝난 후에 프레임마다 마지막으로 한 번 불려진다. //Update()//에서 수행되는 모든 계산은 //LateUpdate()//이 시작할 때 끝날 임. //LateUpdate()//를 위한 공통적인 사용은 다음의 3인칭 카메라일 것임. 사용자가 사용자의 캐릭터를 움직이고 //Update()// 내부에서 돌게 한다면 사용자는 모든 카메라 움직임과 회전 계산//LateUpdate()//에서 수행할 수 있다.  주로 오브젝트를 따라가게 설정한 카메라는 LateUpdate 를 사용니다(카메라가 따라가는 오브젝트가 Update함수 안에서 움직일 경우가 있기 때문) 
-보통의coroutine 업데이트는 업데이트 함수가 리턴한 후에 실행됩니다. Coroutine은 주어진YieldInstruction가 끝낼 까지 그것의 실행을 중지할 수 있는 함수입니다. Coroutines의 다른 사용은 다음과 같습니다: +=====Rendering===== 
-  * __yield;__ Coroutine는 다음 프레임서 부려지는 모든 업데이트 수가 불려진 에 계속될 것입니다. +  * __OnPreCull:__ 카메라가 씬을 추려내기 전에 진다. Culling은 어떤 물체가 카메라에 보일를 결정. Culling일 일어나기 전에OnPreCull이 불려진다. 
-  * __yield WaitForSeconds(2);__ 프레임을 위해 모든 업데트 함수가 불려진 에 된 시간 지연 후에 계속됩니다 +  * __OnBecameVisible/OnBecameInvisible:__ 물체가 카메라에 보이거나/보이지 않게 될 때 불려진다. 
-  * __yield WaitForFixedUpdate();__모든FixedUpdate가 모든 스크서 불려진 후에 계속됩니다 +  * __OnWillRenderObject:__ 물체가 보이면 각 카메라를 위해서 __한 번__ 불려진다. 
-  * __yield WWW__ WWW 다운로드가 완료된 후에 계속됩니다. +  * __OnPreRender:__ 카메라가 씬을 렌더링하는 것을 시작하기 전에 불려진다. 
-  * __yield StartCoroutine(MyFunc);__ Coroutine을 연결하고 첫 번째MyFunc coroutine를 완료하기를 기다릴 것입니다.+  * __OnRenderObject:__ 모든 보통 씬 렌더링이 끝난 후에 불려진다. 사용자는 이 시점에 사용자 의 기하를 그리기 위해 GL 클래스 또는 Graphics.DrawMeshNow를 사용할 수 있다. 
 +  * __OnPostRender:__ 카메라가 씬을 렌더링하는 것을 끝낸 후에 불려진. 
 +  * __OnRenderImage(Pro only):__ 스크린 이미지의 포스트 프로세싱을 허용하기 위해서 씬 렌더링이 완전해진 후에 불려진. 
 +  * __OnGUI:__ GUI 이벤트에 대한 응답으서 프레임당 여러번 불려진다. 각 입력 이벤트를 위한 레이아웃과 키보/마우스 이벤트에 의해 따라오는 레이아웃과 다시 그리기 이벤트는 처음에 프로세스 된다. 
 +  * __OnDrawGizmos__ 시각화 목적으로 씬 뷰에서 즈모를 그리기 위해 사용된..
  
-======When Quitting====== +=====Coroutine===== 
-러한 함수은 사용자의 씬에서 모든 활동적인 물체위에서 불려집니다, : +보통의 [[coroutine]] 업데트는 업데이트 함수가 리턴한 후에 실행된다. Coroutine은 주어진YieldInstruction가 끝낼 때까지 그것의 실행을 중지할 수 있는 함수임. Coroutines의 다른 사용은 다음과 같다: 
-  * __OnApplicationQuit:__ 이 함수는 어플리케이션이 죵료하기 전에 모든 게임 물체위에서 불려집니다. 편집기서 사용자가 플레이 모드를 멈출 때 불려집니. 웹 플레이어에서 웹 뷰가 닫힐 때 불려집니다. +  * __yield;__ Coroutine는 다음 프레임에서 부려지는 모든 업데이트 함수가 불려진 후에 계속될 것임. 
-  * __OnDisable:__ 이 함수는 행동이 비활성화될 때 불려집니다.+  * __yield WaitForSeconds(2);__ 프레임을 위해 모든 업데트 함수가 불려진 후에 지정된 시간 지연 후에 계속된다 
 +  * __yield WaitForFixedUpdate();__모든FixedUpdate가 모든 스크립트에서 불려진 후에 계속된 
 +  * __yield WWW__ WWW 다운로드가 완료된 후에 계속된다. 
 +  * __yield StartCoroutine(MyFunc);__ Coroutine을 연결하고 첫 번째로MyFunc coroutine를 완료하기를 기릴 것임.
  
-====So in conclusionthis is the execution order for any given script:====+=====When Quitting===== 
 +이러한 함수들은 사용자의 씬에서 모든 활동적인 물체위에서 불려진다, : 
 +  * __OnApplicationQuit:__ 이 함수는 어플리케이션이 죵료하기 전에 모든 게임 물체위에서 불려진다. 편집기에서 사용자가 플레이 모드를 멈출 때 불려진다. 웹 플레이어에서 웹 뷰가 닫힐 때 불려진다. 
 +  * __OnDisable:__ 이 함수는 행동이 비활성화될 때 불려진다. 
 + 
 +=====정리하면===== 
 +아래의 순서로 실행되가 된다. 
  
   * 모든 Awake calls    * 모든 Awake calls 
줄 54: 줄 57:
     * OnEnter/Exit/Stay collision 함수들     * OnEnter/Exit/Stay collision 함수들
    
-  * Rigidbody 보간은transform.position 과 회전을 적용합니다+  * Rigidbody 보간은transform.position 과 회전을 적용
   * OnMouseDown/OnMouseUp 등의 이벤트   * OnMouseDown/OnMouseUp 등의 이벤트
   * 모든 Update 함수들   * 모든 Update 함수들
-  * 애니메이션은 발전하고 블렌드되고transform 에 적용됩니+  * 애니메이션은 발전하고 블렌드되고transform 에 적용
   * 모든 LateUpdate 함수들   * 모든 LateUpdate 함수들
   * Rendering   * Rendering
  
-======Hints====== +=====Hints===== 
-  * 사용자가 LateUpdate에서 coroutine을 시작한다면 그것은 렌더링 바로 전에  LateUpdate 후에 불려질 것입니다.  +  * 사용자가 LateUpdate에서 coroutine을 시작한다면 그것은 렌더링 바로 전에  LateUpdate 후에 불려질 것.  
-  * Coroutines은 모든 업데이트 함수 이후에 실행됩니다.+  * Coroutines은 모든 업데이트 함수 이후에 실행다.
  
- 
-{{tag>유니티 unity 코루틴 협동동루틴}} 
    * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.ExecutionOrder|유니티코리아위키]] (CC BY-NC-SA 2.0)    * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.ExecutionOrder|유니티코리아위키]] (CC BY-NC-SA 2.0)