找回密码
 立即注册
查看: 4440|回复: 51

[常见问题] unity中Coroutines与Invoke

[复制链接]
发表于 2015-2-11 17:27 | 显示全部楼层 |阅读模式
今天在蛮牛教育群里请教了一下大神关于协程的一些知识,拿来给大家分享
(一)、StartCoroutine、StopCoroutine、StopAllCoroutines
1.StartCoroutine有两种传参方法,一种是字符串,一种是IEnumerator,传字符串的只能传一个方法参数,传IEnumerator没有限制。
2.StopCoroutine只能停止用字符串传参的协同,而用IEnumerator传参的要使用StopAllCoroutines。
3.一旦gameobject的状态是inactive,协同就失效。包括脚本依附的gameobject的父gameobject,再次active也无法唤起协同
4.组件enable状态无法暂停协同。
5.一旦跳转场景(其实就是协同所在的脚本所依附的gameobject被删除,包括脚本被删除,gameobject整个被删除),协同马上停止。
6.StopCoroutine、StopAllCoroutines只能停止相应脚本上的协同,不能停止别的脚本上的协同,例如脚本A上有协同 a,StopCoroutine、StopAllCoroutines要写在脚本A上,如果想在脚本B停止协同a,应该在脚本A上封装一个停止的方法让脚 本B调用。


(二)、Invoke、CancelInvoke
1.Invoke、InvokeRepeating是用CancelInvoke停止。
2.CancelInvoke只能停止相应脚本上的协同,与(一)中的第6点同理。
3.无论active=false,还是enable=false,无法停止Invoke,除非Invoke所在脚本或所依附的gameobject被destroy。

发表于 2015-3-11 23:14 | 显示全部楼层
学习学习 ,学习学习 ,
发表于 2017-5-14 20:03 | 显示全部楼层
楼主是超人
发表于 2017-5-14 19:51 | 显示全部楼层
好帖就是要顶
发表于 2017-5-14 19:10 | 显示全部楼层
真心顶
发表于 2017-5-14 19:16 | 显示全部楼层
难得一见的好帖
发表于 2017-5-14 19:30 | 显示全部楼层
不错不错
发表于 2017-6-12 14:09 | 显示全部楼层
楼主是超人
发表于 2017-6-12 14:53 | 显示全部楼层
真心顶
发表于 2017-6-12 14:11 | 显示全部楼层
难得一见的好帖
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 07:13 , Processed in 0.097419 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表