• Unity中的协程用法以及注意事项


      前沿:这章节,将简单的总结一下如何开启协程,关闭协程,以及使用协程的注意事项。

      一、如何开启协程:

    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停止协程时,应当注意到,不是停止所有的协程,而是停止当前脚本下的所有协程。

  • 相关阅读:
    bzoj 1217 [HNOI2003]消防局的设立 贪心
    bzoj 1124 [POI2008]枪战Maf 贪心
    bzoj 2525 [Poi2011]Dynamite 二分+树形dp
    搭建SpringMVC+MyBatis开发框架六
    搭建SpringMVC+MyBatis开发框架五
    搭建SpringMVC+MyBatis开发框架四
    搭建SpringMVC+MyBatis开发框架三
    搭建SpringMVC+MyBatis开发框架二
    搭建SpringMVC+MyBatis开发框架一
    Mac下安装Node.js
  • 原文地址:https://www.cnblogs.com/Dean27/p/8610219.html
Copyright © 2020-2023  润新知