今天在蛮牛教育群里请教了一下大神关于协程的一些知识,拿来给大家分享 (一)、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。
|