
예1) Do 함수를 실행하고 그것이 완료된 후에 코드 실행을 계속함
function Start() {
// 자바스크립트의 경우, yield Do(); 와 같음
// C#의 경우, 반드시 StartCoroutine 사용해야 함
yield StartCoroutine(Do());
Debug.Log("This is printed after 5 seconds");
Debug.Log("This is after the Do corutine has finished execution");
}
function Do() {
Debug.Log("Do now");
yield WaitForSeconds(5);
Debug.Log("Do 5 Seconds later");
}
* 결과는
(1) Do now
(2) Do 5 Seconds later
(3) This is printed 5 sends
(4) This is after the Do coroutine has finished execution
예2) function Start() {
Debug.Log("Starting = " + Time.time);
yield WaitAndPrint();
Debug.Log("Done WaitAndPrint = " + Time.time);
}
function WaitAndPrint() {
yield WaitFor Seconds(5);
Debug.Log("WaitAndPrint = " + Time.time);
}
* 결과는
(1) Startine = 0
(2) WaitAndPrint = 5.003615
(3) Done WaitAndPrint = 5.003615
1. WaitForFixedUpdate
- FixedUpdate 함수의 다음번 호출을 기다림
예) function Start() {
// FixedUpdate가 끝나길 기다림
yield new WaitForFixedUpdate();
// FixedUpdate 호출이 끝나면 이어서...
Debug.Log("Call after FixedUpdate");
}
function FixedUpdate() {
Debug.Log("FixedUpdate");
}
[출처] 유니티 주요함수 #3 | 작성자 만듀
'Unity3D' 카테고리의 다른 글
Unity 주요함수 #4 (0) | 2014.01.16 |
---|---|
Unity 주요함수 #2 (0) | 2014.01.16 |
Unity 주요함수 #1 (0) | 2014.01.16 |

1. Yield
- 현재 위치에서 한 프레임을 대기
(선언 위치 기준으로 이하 모듈들을 이번 프레임에서 모두 건너뛰며, 다음 프레임에서는 상위 모듈을 건너 뛰고 이하 모듈을 수행함)
예) private var state = 0;
function Update() {
if(state == 0) {
Debug.Log("Step 0");
state = 1;
return;
}
if(state == 1) {
Debug.Log("Step 1");
state = 0;
return;
}
}
# 조건문을 사용하지 않고 이벤트의 실행 순서를 제어함
function Start() {
while(true) {
Debug.Log("Step 0");
yield;
Debud.Log("Step 1");
yield;
}
}
-> yield에서 WaitForSeconds, WaitForFixedUpdate, Coroutine, StartCoroutine
같은 특별한 값을 전달해서 특정 이벤트가 처리될 때까지 Update함수의 실행을
지연시킬 수 있음
-> Update나 FixedUpdate에서는 yield 사용이 불가능, 그러나 yield를 사용하는
특정 함수를 시작하기 위해 StartCoroutine을 사용할 수 있음
2. WaitForSeconds
- 일정시간 동안 코루틴의 실행을 정지
- WaitForSeconds는 코루틴에서 yield와 함께 사용되야 함
예) function Start() {
// 0 출력
Debug.Log(Time.time);
// 5초 딜레이
yield WaitForSeconds(5);
// 5 출력
Debug.Log(Time.time);
}
# 코루틴 스택을 만들거나 코루틴 흐름을 결정할 수 있음
# Do 함수를 즉각적으로 호출한 후에 코드 실행이 계속 됨
function Start() {
Do();
Debug.Log("This is printed immediately");
}
function Do() {
Debug.Log("Do now");
yield WaitForSecionds(5);
Debug.Log(Do 5 Seconds Later");
}
* 결과는
(1) Do now
(2) This print Im...
(3) Do 5 Seconds Later
[출처] 유니티 주요함수 #2 | 작성자 만듀
'Unity3D' 카테고리의 다른 글
Unity 주요함수 #4 (0) | 2014.01.16 |
---|---|
Unity 주요함수 #3 (0) | 2014.01.16 |
Unity 주요함수 #1 (0) | 2014.01.16 |

1. Awake
- 게임이 스크립트의 인스턴스를 불러올때 호출
- 스크립트의 인스턴스가 존재하는 동안 한번 호출
- 변수나 게임 상태 초기화를 위해 사용
-> 각 오브젝트의 Awake함수가 호출되는 순서는 무작위
-> Awake는 다른 Start함수보다 먼저 호출
-> Awake에서는 코루틴을 사용할 수 없음
2. Start
- Update함수 전에 호출
- 스크립트의 인스턴스가 존재하는 동안 한번 호출
-> Awake와 차이점은 Start의 경우, 스크립트의 인스턴스가 활성화 된 경우만
호출
3. Update
- 활성화 상태이면 매 프레임마다 호출
4. FixedUpdate
- 활성화 된 상태에서 일정한 시간마다 호출
- 리지드 바디를 다룰때 Update대신 FixedUpdate를 사용해야 함
(물리 시뮬레이션이 일정한 시간 간격마다 이루어짐)
-> FixedUpdate는 각 간격이 시작되기 전에 업데이트 됨
5. LateUpdate
- 활성화 상태이면 매 프레임에 호출
- 모든 Update함수가 호출된 다음에 호출
- 스크립트의 실행 순서를 제어하는데 유용
(Update에서 움직이는 오브젝트를 따라다니는 카메라는 LateUpdate안에서 제어해야 함)
6. OnGUI
- 활성화 된 상태에서 호출
- GUI.Button, GUI,Label, GUI.Box 같은 GUI 이벤트를 렌더링하고 제어하는데
사용
- 한 프레임에 여러번 호출될 수도 있음
(이벤트 당 한번 호출되기 때문)
7. OnDrawGizmos
- 선택할 수 있고, 항상 표시되는 기즈모를 그리고 싶을때 사용
- 씬에 중요한 오브젝트를 빠르고 간편하게 선택할 수 있음
- Gizoms.DrawRay, Gizmos.DrawLine, Gizmos.DrawWireSphere 등을 통해 라인
내지는 다른 형태의 기즈모를 그려서 디버그 작업을 수월하게 할 수 있음
-> OnDrawGizmons는 씬뷰를 기준으로 하는 마우스 위치값을 사용함
예) var target : Transform;
function OnDrawGizmos() {
if(target ! = null) {
Gizmos.color = Color.Blue;
Gizmos.DrawLine(transform.position, target.position);
}
}
[출처] 유니티 주요함수 #1 | 작성자 만듀
'Unity3D' 카테고리의 다른 글
Unity 주요함수 #4 (0) | 2014.01.16 |
---|---|
Unity 주요함수 #3 (0) | 2014.01.16 |
Unity 주요함수 #2 (0) | 2014.01.16 |