Unity协同程序

本文介绍了Unity中的协程序,包括Unity对多线程的支持情况、协程序的概念、与线程的区别、使用方法以及yield return的多种含义。协程序主要用于分时执行任务,避免阻塞主线程,适用于异步加载、下载等场景。需要注意的是,协程受对象和组件的活跃状态影响,当组件或物体被销毁或失活时,协程可能停止执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Unity是否支持多线程

Unity是支持多线程的,只是新开的线程无法访问Unity相关对象的内容

  • Unity中的多线程要记得关闭,否则即使Unity停止运行游戏,那么线程中的函数依然会执行。这是因为Unity是一个编辑器,新开的线程和Unity是共生的状态,只要Unity没有关闭或者脚本没有改变,那么新开的线程不会停止,因此可以在OnDestroy()中通过Abort()关闭多线程。
  • 新开的线程的使用有限制,例如要访问【this.transform】是不被允许的,因此通常作为复杂算法计算的附属线程,例如实现A*寻路算法,或者进行网络消息的处理,这是基于主线程与附线程的内存是通用的。

2、协同程序是什么

简称协程,是“假”的多线程,主要作用是:将代码分时执行,不阻塞主线程(即把可能会让主线程卡顿的耗时的逻辑分时分步执行)。和线程一样,最好不要在Update中添加协程。

主要使用场景:

  • 异步加载文件
  • 异步下载文件
  • 场景异步加载
  • 批量创建时防止卡顿

3、协同程序和线程的区别

新开一个线程是独立的一个管道,和主线程并行执行;

新开一个协程是在原线程之上开启,进行逻辑分时分步执行。(可以理解为把一个函数分为几部分分时进行)

4、协程的使用

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

(1)第一步:声明协程函数

协程函数有两个关键点:

  • 返回值为IEnumerator类型及其子类
  • 通过yield return返回值进行返回
IEnumerator MyCoroutine(int i, string str) {
    print(i);
    yield return new WaitForSeconds(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值