纳金网

标题: 有关延时执行的yield,coroutine相关用法 [打印本页]

作者: 刀锋狼    时间: 2014-5-30 04:03
标题: 有关延时执行的yield,coroutine相关用法
1.yield: 声明一种特殊的return,可以传值如Waitforsecond(5.0),实现延时或某一事件发生后触发,如果有需要有依赖关系顺序执行的函数,如

private var state = 0;

function Update() {

if (state == 0) {

// do step 0

state = 1;

return;

}

if (state == 1) {

// do step 1

state = 2;

return;

}

// ...

}

可这样使用 yield

while(***e) {

// do step 0

yield; // wait for one frame

// do step 1

yield; // wait for one frame

// ...

}

可以把 yield 理解为一种挂起 ,当函数再次执行到它时不在返回而是执行其后下面的语句

2.coroutine:作为function StartCoroutine (routine : IEnumerator) 的返回值。一个函数中包含yield声明,就可以构成一个coroutine,这个函数的调用时必由StartCoroutine来进行调用,如下

function Awake(){

StartCoroutine(MyDo());

}

function MyDo(){

while (***e) {

  print("first");

  yield WaitForSeconds(3.0f);

  print("second");

  yield ;

  break;

}

}   

作者: hyui    时间: 2014-5-30 05:15
Thank you for  this code!
作者: Kadina    时间: 2014-5-30 08:29
happy your sharing
作者: wucnj    时间: 2014-5-30 13:36
感谢分享!!!




欢迎光临 纳金网 (http://wwww.narkii.com/club/) Powered by Discuz! X2.5