Unity之协同程序

一 Unity是否支持多线程

//首先要明确一点
//Unity是否支持多线程
//只是新开线程无法访问Unity相关对象的内容//注意 : Unity中的多线程 要记得关闭
t = new Thread(Test);
t.Start();//用处:在进行一些寻路算法运算以及网络通信相关内容时,可能会导致主线程卡顿,这个时候使用副线程来处理

二 协同程序是什么

//协同程序简称协程
//它是"假"的多线程 ,它不是多线程//主要作用
//将代码分时执行,不卡主线程
//简单理解,是吧可能会让主线程卡顿的耗时逻辑分时分步执行//主要使用的场景:
//异步加载文件
//异步下载文件
//场景异步加载
//批量创建时防止卡顿

三 协同程序和线程的区别

//新开一个线程是独立的一个管道,和主线程并行执行
//新开一个协程是在原线程之上开启,进行逻辑分时分布执行

四 协程的使用

//继承MonoBehavior的类 都可以开启 协程函数
//第一步:申明协程函数
// 协程函数2个关键点
// 1-1 返回值为IEnumerator类型及其子类
// 1-2函数中通过 yield return 返回值;并进行返回//第二步:开启协程函数
//协程函数不能直接去执行
//MyCoroutine(1, "123");
//常用开启方式
Coroutine  c1 = StartCoroutine(MyCoroutine(1, "123"));
Coroutine  c2 = StartCoroutine(MyCoroutine(1, "123"));
Coroutine  c3 = StartCoroutine(MyCoroutine(1, "123"));//第三步:关闭协程
//关闭所有协程
StopAllCoroutines();
//关闭指定协程
StopCoroutine(c1);
//关键点一: 协同程序函数 返回值 必须是IEnumerator或者继承它的类型IEnumerator MyCoroutine(int i ,string str)
{print(i);//协程函数当中 必须使用 yield return 进行返回yield return new WaitForSeconds(5f);print(str);
}

五 yield return 不同内容的含义

//1.下一帧执行
yield return 数字;
yield return null;
//在Update和LateUpdate之间执行//2.等待指定秒后执行
yield return new WaitForSeconds(秒);
//在Update和LateUpdate之间执行//3.等待下一个固定物理帧更新时执行
yield return new WaitForFixedUpdate();
//在FixedUpdate和碰撞检测相关函数之后执行//4.等待摄像机和GUI渲染完成后执行
yield return new WaitForEndOfFram();
//在LateUpdate之后的渲染相关处理完毕之后//5.一些特殊类型的对象 比如异步加载相关函数返回的对象
//一般在Update和LateUpdate之间执行//6.跳出协程
yield break;

六 协程受对象和组件失活销毁的影响

协程开启后

组件和物体销毁,协程不执行

物体失活协程不执行,组件失活协程执行

总结

1.Unity支持多线程,只是新开的线程无法访问主线程中Unity相关内容
  一般主要用于进行复杂逻辑运算或者网络消息接收等等
  注意 :Unity中的多线程一定记住要关闭
2.协同程序不是多线程,他是将线程中逻辑进行分时执行,避免卡顿
3.继承MonoBeahvior的类都可以使用协程
4.协程只有当组件单独失活时不受影响,其他情况都会停止

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Echars3D 饼图开发

关于vue echart3D 饼图开发 首先要先下载 "echarts-gl", 放在main.js npm install echarts-gl --save <template><div class"cointan"><!-- 3d环形图 --><div class"chart" id"cityGreenLand-charts"><…

03. 【Linux教程】安装虚拟机

前面小节介绍了 Linux 和 GUN 项目&#xff0c;本小节开始学习如何在 Windows 上安装虚拟机&#xff0c;虚拟机安装之后可以在虚拟机中安装 Linux 相关的操作系统&#xff0c;常见的虚拟机软件有 VirtualBox、VMware 等等&#xff0c;本教程使用 VMware 虚拟机软件来演示如何安…

java数据结构与算法刷题-----LeetCode198. 打家劫舍

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

Flink CDC 3.0 详解

一、Flink CDC 概述 Flink CDC 是基于数据库日志 CDC&#xff08;Change Data Capture&#xff09;技术的实时数据集成框架&#xff0c;支持全增量一体化、无锁读取、并行读取、表结构变更自动同步、分布式架构等高级特性。配合Flink 优秀的管道能力和丰富的上下游生态&#x…

开启Android学习之旅-1

最近在学习《第一行代码 Android》&#xff0c;两天看书把所有代码都敲了一遍。由于之前没有接触过 Kotlin&#xff0c;导致了囫囵吞枣&#xff0c;跟着书会敲&#xff0c;离开就忘了。Android 大佬开发的各种框架、控件好像大部分都用了 Kotlin。看他们的源码&#xff0c;理解…

【每日一题】7.LeetCode——合并两个有序链表

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》|《数据结构与算法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢…

结束语_从困惑到启动

从22年9月份开始陆续碰到不少网络问题需要处理&#xff0c;基于问题驱动去学习相关的知识点。 23年上半年开始想进行总结输出&#xff0c;动手写的时候发现自己七窍通了六窍——一窍不通&#xff0c;又回过头来重新学习TCP/IP协议、计算机网络、wireshark抓包等相关知识。从酝酿…

【issue-YOLO】自定义数据集训练YOLO-v7 Segmentation

1. 拉取代码创建环境 执行nvidia-smi验证cuda环境是否可用&#xff1b;拉取官方代码&#xff1b; clone官方代码仓库 git clone https://github.com/WongKinYiu/yolov7&#xff1b;从main分支切换到u7分支 cd yolov7 && git checkout 44f30af0daccb1a3baecc5d80eae229…

C++——日期类

前言&#xff1a;哈喽小伙伴们&#xff0c;在上一篇文章中我们对C类与对象的前半段知识进行了简单的分享&#xff0c;其中比较重要的莫过于C类的六个默认成员函数。 所以这篇文章&#xff0c;我们通过实现一个完整的日期的操作&#xff0c;来对这些成员函数有一个更加深入的理…

你还不会使用git吗?

Git的基本概念包括工作区&#xff08;Workspace&#xff09;、暂存区&#xff08;Index/Stage&#xff09;和版本库&#xff08;Repository&#xff09;。 Git是一个分布式版本控制系统&#xff0c;它允许开发者在本地工作并保存他们的更改&#xff0c;然后再将这些更改推送到…

RabbitMQ-高级篇

服务异步通信-高级篇 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送…

Android 高德地图切换图层

一、默认样式 Android 地图 SDK 提供了几种预置的地图图层&#xff0c;包括卫星图、白昼地图&#xff08;即最常见的黄白色地图&#xff09;、夜景地图、导航地图、路况图层。 findViewById<TextView>(R.id.normal).setOnClickListener {updateSelectedStatus(TYPE_NORMA…

EasyExcel多线程导出并实现Zip压缩

前言&#xff1a;之前实现的需求由于导出时需要的时间过于长&#xff0c;需要优化采用多线程的方式进行导出 更改之后的代码&#xff1a; 首先创建excel的临时文件&#xff0c;并写入。然后创建线程池&#xff0c;调用zipArchiveOutputStream来写入图片和excel PostMapping(&qu…

Glide完全解读

一&#xff0c;概述 glide作为android流行的图片加载框架&#xff0c;笔者认为有必要对此完全解读。glide提供了三级缓存、生命周期Destroy后自动移除缓存、自动适配ImageView&#xff0c;以及提供了各种对图片修饰的操作&#xff0c;如剪裁等。本文通过最简单的使用&#xff…

Vue(二十):ElementUI 扩展实现表格组件的拖拽行

效果 源码 注意&#xff1a; 表格组件必须添加 row-key 属性&#xff0c;用来优化表格的渲染 <template><el-row :gutter"10"><el-col :span"12"><el-card class"card"><el-scrollbar><span>注意: 表格组件…

自动化测试再升级,大模型与软件测试相结合

近年来&#xff0c;软件行业一直在迅速发展&#xff0c;为了保证软件质量和提高效率&#xff0c;软件测试领域也在不断演进。如今&#xff0c;大模型技术的崛起为软件测试带来了前所未有的智能化浪潮。 软件测试一直是确保软件质量的关键环节&#xff0c;但传统的手动测试方法存…

编写交互式 Shell 脚本

在日常的系统管理和自动化任务中&#xff0c;使用 Shell 脚本可以为我们节省大量时间和精力。 文章将以输入 IP 为例&#xff0c;通过几个版本逐步完善一个案例。 原始需求 编写一个交互式的 Shell 脚本&#xff0c;运行时让用户可以输入IP地址&#xff0c;并且脚本会将输入…

国辰智企TMS定制化模块,实现智慧园区的全面管理

智慧园区综合管理系统是一种针对园区业务场景的高度定制化解决方案&#xff0c;通过选择性部署相应的模块&#xff0c;实现对园区各方面业务的全面管理。通常情况下&#xff0c;园区都需要有效地管理资产、确保安全&#xff0c;以及进行访客预约。这一全面性的系统通过各个模块…

每日一题 力扣2670找出不同元素数目差数组

2670. 找出不同元素数目差数组 题目描述&#xff1a; 给你一个下标从 0 开始的数组 nums &#xff0c;数组长度为 n 。 nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示&#xff0c;其中 diff[i] 等于前缀 nums[0, ..., i] 中不同元素的数目 减去 后缀 num…

安装配置hive

1、下载 上传apache-hive-2.3.7-bin.tar.gz到虚拟机/root目录下或在虚拟机正常联网的情况下使用下面的wget命令下载文件。 [root@hadoop00 ~]# wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz [root@hadoop00 ~]# tar zx…