unity 协程 基础介绍

协程不是多线程,虽然是支持分开管理的,检查协程的代码不用考虑同步和锁的问题(用于异常测试的测试知识点)


unity 会在每秒帧处理对象的协程,当某些情况下,需要检查 update 函数后会进行处理协程,就需要检查,检查方式代码走查。
MonoBehaviour 并且 yield 满足,会执行协程后面的代码。
用 fps 做 1 个范例,遇到条件语句会等待时间后执行,也可以挂起。自我感觉是写的比较浅的只写了①时间管理

游戏产业可以和②碰撞管理类 ③计数 参与管理

具体 C# 例子如下:

using UnityEngine;
using System.Collections;
public class NcDrawFpsRect : MonoBehaviour
{
    ---


    IEnumerator FPS()
    {
        while (true)
        {
            // Update the FPS
            float fps = accum/frames;
            sFPS = fps.ToString( "f" + Mathf.Clamp( nbDecimal, 0, 10 ) );

        yield return new WaitForSeconds(fre); //①时间管理 协程上面float fre

            //Update fps color
            color = (fps >= 30) ? Color.green : ((fps > 10) ? Color.yellow : Color.red);

            public  float fre = 0.5F;
            private float accum = 0.0F;
            private int frames = 0;

        yield return new WaitForSecondswait0.3f)); //①时间管理 

        }
    }

协程效率对比 update 带来的性能消耗较少,这块具体可以看 unity 官方手册。
在游戏开发中把 gameobject 的 active 属性设置为 false 就关闭了协程。在 MonoBehaviour 里开发者可以便于管理,同时避免出错,这个也是协程存在的意义。


↙↙↙阅读原文可查看相关链接,并与作者交流