码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-03-20 18:07:27      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:col   seconds   coroutine   yield   enum   art   若是   date()   tor   

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

 

  一、如何开启协程:

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

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

标签:col   seconds   coroutine   yield   enum   art   若是   date()   tor   

原文地址:https://www.cnblogs.com/Dean27/p/8610219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!