查看: 1792|回复: 3
打印 上一主题 下一主题

[其他] 有关延时执行的yield,coroutine相关用法

[复制链接]

711

主题

10

听众

5805

积分

高级设计师

Rank: 6Rank: 6

纳金币
2954
精华
3

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-5-30 04:03:00 |只看该作者 |倒序浏览
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;

}

}   
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-5-30 05:15:21 |只看该作者
Thank you for  this code!
回复

使用道具 举报

0

主题

2

听众

4092

积分

中级设计师

Rank: 5Rank: 5

纳金币
530
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-5-30 08:29:33 |只看该作者
happy your sharing
回复

使用道具 举报

wucnj    

1

主题

1

听众

3160

积分

中级设计师

Rank: 5Rank: 5

纳金币
1065
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2014-5-30 13:36:40 |只看该作者
感谢分享!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-11 05:24 , Processed in 0.115254 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部