unity基础(八)协程

为什么需要协程?

unity线程无法访问unity相关对象的内容

多线程用来做复杂的计算结果。因为主线程的存在,导致副线程不能访问unity中相关对象

但协程可以访问

批量创建时,减少卡顿感。

协同程序

它是假的多线程 它不是多线程

它的主要作用 将代码分时执行

是把可能会让主线程卡顿的耗时逻辑分时的分布执行

继承MonoBehavior的类 都可以开启协程函数

第一步 申明协程函数

协程函数2个关键点

1-1返回值为IEnumerator类型及其子类

1-2函数中通过yield return 返回值 进行返回

协同程序函数 返回值 必须是 IEnumerator或者继承它的类型

cs 复制代码
IEnumerator MyCoroutine (int i, string str)
{
    print(i);
    //协程函数当中必须使用 yield return 进行
    yield return new WaitForSeconds(i);//等待时间 ,该句之前的内容执行后,后面的内容要等5秒后执行
    print(str);
    yield return new WaitForSeconds(i);//时间分割,写几个就相当于把代码分成了几部分

    while (true)
    {
        print(5);
        yield return new WaitForSeconds(5); //写死循环 分布
    }

}

协程函数的开启和关闭

协程函数 是不能这样直接去执行的,这样执行没有任何效果

cs 复制代码
MyCoroutine(1,"123");

开启方式1

cs 复制代码
IEnumerator ie = MyCoroutine(1, "123");
StartCoroutine(ie);

开启方式2

cs 复制代码
StartCoroutine(MyCoroutine(1, "123"));

关闭

cs 复制代码
Coroutine c1= StartCoroutine(MyCoroutine(1, "123"));
Coroutine c2 = StartCoroutine(MyCoroutine(1, "123"));
Coroutine c3  = StartCoroutine(MyCoroutine(1, "123"));

协程的关闭 关闭所有

cs 复制代码
StopAllCoroutines();

关闭指定协程

cs 复制代码
StopCoroutine(c1);
相关推荐
小羊没烦恼!8 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
昂好的day10 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
波力海苔夹心脆67513 小时前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
昂好的day15 小时前
VisionMaster(VM) 标定工具详解(上):为什么必须标定 + 九点标定手眼标定
开发语言·数码相机·c#
小羊没烦恼!20 小时前
深入浅出SQL Server中的死锁
java·开发语言·前端·数据库·后端·spring·c#
Wanda121420 小时前
机器人与机电一体化3D数字孪生机器-Day5
人工智能·unity·游戏引擎·数字孪生
乌萨达20 小时前
星途天城电脑版怎么玩?星途天城PC版游玩指南
游戏·安卓模拟器·雷电模拟器
Wanda121421 小时前
机器人与机电一体化3D数字孪生机器-Day4
3d·unity·机器人·数字孪生
x10n91 天前
GRLPackage 游戏运行库合集 一键修复报错
游戏·运行库·游戏报错修复
czhc11400756631 天前
同值短路与单一真值源:属性不是命令,状态只有一个家
c#