Unity 3D中yield协程与消息传递
来源:互联网 发布:淘宝包邮软件 编辑:程序博客网 时间:2024/04/30 11:58
1. 协程
在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花、怪物死亡后20秒再复活之类的。刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这样写。
1 float nowTime = 3.0f; 2 bool isDead = true; 3 float deadTime = 20.0f; 4 5 void startFireworks() 6 { 7 // 放烟花 8 } 9 10 void revival()11 {12 // 复活13 }14 15 void Update () 16 {17 if (nowTime <= 0)18 {19 startFireworks();20 nowTime = Random.Range(2.5f, 3.5f);21 }22 nowTime -= Time.deltaTime;23 if (isDead)24 {25 if (deadTime <= 0)26 {27 revival();28 isDead = false;29 deadTime = 30.0f;30 }31 deadTime -= Time.deltaTime;32 }33 }
当这样的需求多起来时,Update中凌乱不堪,如果有需求需要添加或者修改,将显得非常麻烦。尤其是类似死亡后复活这种需求,只是在死亡后等待30秒重新复活,其他时间根本不需要去执行,这样放在Update里面还需要每一帧去判断,显得很累赘。
好在Unity 3D支持yield协程,不懂没关系,先看看下面用协程实现上面的功能。
1 void Start() 2 { 3 StartCoroutine(Fireworks()); 4 } 5 6 void deadHandle() 7 { 8 StartCoroutine(Revival()); 9 }10 11 IEnumerator Fireworks()12 {13 while (true)14 {15 startFireworks();16 yield return new WaitForSeconds(Random.Range(2.5f, 3.5f));17 }18 }19 20 IEnumerator Revival()21 {22 yield return new WaitForSeconds(30.0f);23 revival();24 }
上面代码中,以IEnumerator作为返回值的函数就是协程,调用StartCoroutine()开始协程,在Start函数中调用StartCoroutine(Fireworks());,说明在开始时就开始执行协程Fireworks(),在deadHandle()中调用StartCoroutine(Revival());说明是在怪物死亡时开始执行协程。
现在再来看看
转载自 http://doc.okbase.net/qinruijie/archive/93681.html
0 0
- Unity 3D中yield协程与消息传递
- Unity 3D中不得不说的yield协程与消息传递
- unity 3d yield 用法总结
- Unity 3D Coroutine&yield(C#脚本)
- Unity中游戏体的消息传递
- Unity协程的yield & C#的yield关键字
- Unity3D:unity与Android相互传递消息 & unity与ios相互传递消息
- unity中消息传递的三种方法
- Unity中使用自定义事件在View之间传递消息
- unity中利用sentmessage发送消息传递多个参数
- 协程与yield表达式
- 深入理解yield(二):yield与协程
- C#中 yield return 与 yield break
- C#中 yield return 与 yield break
- C#中 yield return 与 yield break
- unity中2D相机与3D相机的二三事
- UNITY 3D 协程执行顺序
- Unity中 yield return 1 的误区
- “System.AccessViolationException”类型的未经处理的异常在 未知模块。
- Jersey框架入门学习:Jersey图片服务器搭建总结
- java中计算包含汉字字符串的长度
- Python3 Python对象持久化(pickle / shelve)
- css超出一行省略号:text-overflow和white-space超出隐藏显示省略号
- Unity 3D中yield协程与消息传递
- 孤儿进程以及孤儿进程组
- 开始编写python程序
- Windows下安装Hadoop
- html5文档结构
- 任务状态段TSS
- Linux下查看MySQL的安装路径
- Android Design Library(一)提供的TabLayout的用法
- Linux环境下耗尽cpu占用率的脚本