퐁듀블로그

블로그 이미지
by 초코맛퐁듀
  • Total hit
  • Today hit
  • Yesterday hit

'Unity3D'에 해당되는 글 4건

  1. 2014.01.16
    Unity 주요함수 #4
  2. 2014.01.16
    Unity 주요함수 #3
  3. 2014.01.16
    Unity 주요함수 #2
  4. 2014.01.16
    Unity 주요함수 #1

1. 함수명을 이용한 StartCoroutine & StopCoroutine

- 문자열 사용의 코루틴 단점은 코루틴 시작 시점에서 런타임 성능의 부담이 크고

   하나의 파라메터만 전달이 가능함

- 현재 Behaviout에서 실행되고 있는 특정 함수의 모든 코루틴을 정지시킴

 

-> StopCoroutine은 문자열을 사용하는 StartCoroutine에 의해서 시작된 코루틴만

    멈출 수 있음

예) function Start() {

StartCoroutine("DoSomething", 5.0);

yield Wait ForSeconds(2.0);

 

StopCoroutine("DoSomething");

}

 

function DoSomething(someParam : float) {

while(true) {

Debug.Log("DoSomething Loop = " + Time.time);

yield;

}

}

 

* 결과는

(1) DoSomething Loop = 0

(2) ...

(3) DoSomething Loop = 2.011495

 

-> 주의  : 마지막 라인의 yield를 빼면 무한루프에 빠져서 유니티가 응답없음

              이 되버림

 

 

2. StopAllCoroutines

- 현재 Behaviour에서 실행되고 있는 모든 코루틴을 정지시킴

  

   StopAllCoroutines();

 

[출처] 유니티 주요함수 #4 | 작성자 만듀

'Unity3D' 카테고리의 다른 글

Unity 주요함수 #3  (0) 2014.01.16
Unity 주요함수 #2  (0) 2014.01.16
Unity 주요함수 #1  (0) 2014.01.16
AND

예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
AND

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
AND

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
AND

ARTICLE CATEGORY

이것저것 (6)
C# (0)
Unity3D (4)
리뷰 (1)

RECENT ARTICLE

RECENT COMMENT

CALENDAR

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ARCHIVE

LINK