前沿:这章节,将简单的总结一下如何开启协程,关闭协程,以及使用协程的注意事项。
一、如何开启协程:
private void Start() { m_SpherePrefab = Resources.Load<GameObject>("Test/Sphere_00"); Debug.Log("m_SpherePrefab = " + m_SpherePrefab); #region 协程的学习及使用 StartCoroutine(Test_00()); StartCoroutine("Test_01"); StartCoroutine(Test_02(5, 9)); #endregion } private IEnumerator Test_00() { Debug.Log("协程 Test_00 准备执行"); yield return new WaitForSeconds(3.0f); Debug.Log("协程 Test_00 执行完毕"); } private IEnumerator Test_01() { Debug.Log("协程 Test_01 准备执行"); yield return new WaitForSeconds(5.0f); Debug.Log("协程 Test_01 执行完毕"); } private IEnumerator Test_02(int a, int b) { Debug.Log("协程 Test_02 准备执行"); yield return new WaitForSeconds(8.0f); Debug.Log("协程 Test_02:" + a + " " + b); Debug.Log("协程 Test_02 执行完毕"); }
这里,例举了开启协程的3种方法,以及协程传递数据的使用方法。
二、如何停止协程
private void Update() { if (m_CurrentCount < m_MaxCount) { if (Time.time > m_NextCloneTime) { //克隆 Clone(); } } if (Input.GetKeyUp(KeyCode.T)) { //通过 StopCoroutine 停止协程的时候,需要用方法名来停止,那么在开启协程的时候,也需要使用方法名来开启 //错误的停止方式 //StopCoroutine(Test_00()); } if (Input.GetKeyUp(KeyCode.Y)) { //通过 StopCoroutine 停止协程的时候,需要用方法名来停止,那么在开启协程的时候,也需要使用方法名来开启 //正确的停止方式 StopCoroutine("Test_01"); } if (Input.GetKeyUp(KeyCode.U)) { StopAllCoroutines(); } }
这里,指示了停止协程的方法。
三、注意事项
1.若是停止某个指定的协程(StopCoroutine),则填写的参数应该是方法名,并且开启这个协程的时候,填写的参数应当也是方法名。
2.在使用使用StopAllCoroutines停止协程时,应当注意到,不是停止所有的协程,而是停止当前脚本下的所有协程。