当前位置:网站首页>Unity update process_ Principle of unity synergy
Unity update process_ Principle of unity synergy
2022-07-04 15:07:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm your friend, Quan Jun .
Unity The principle of CO process
Release time :2019-06-13 18:45,
A coroutine is not multithreaded , The coroutine is still in the main thread ( notes : stay Unity The Central African main thread is not accessible Unity Resources )
1、 Threads 、 The difference between process and coroutine
The process has its own independent heap and stack , Neither heap nor stack is shared , Processes are scheduled by the operating system
Threads have their own independent stacks and shared heaps , Shared heap does not share stack , Threads also have operating system scheduling ( Standard threads are like this )
Coroutines share heaps and not stacks like threads , The programmer displays the schedule in the code of the coroutine
An application generally corresponds to a process , A process usually has a main thread , There are also several worker threads , Threads are parallel , You can start a coroutine in a thread , Let the program run at a specific time .
The difference between a coroutine and a thread is : The process avoids meaningless scheduling , This can improve performance , But it is also so , Programmers have to take responsibility for scheduling themselves , meanwhile , Coroutines also lose the standard thread usage CPU The ability of .
2、Unity The principle of intermediate process execution
Put one on first unity Frame operation diagram of the main line :
stay Unity Runtime , Calling a coroutine is just starting a IEnumerator( iterator ), The process begins to run , In carrying out the yield
return There was no difference from other normal procedures , But when it comes to yield
return And I'll be back immediately , And suspend the function temporarily . In the next frame FixedUpdate perhaps Update After judgment yield return
Whether the following conditions are satisfied , If satisfied, execute downward .
according to unity We know the main frame diagram , Collaborative programs are mainly in update() After method ,lateUpdate() Call before method .
Unity The impact of the life cycle on the process :
By setting MonoBehaviour The script enabled There's no impact on Xiecheng , But if gameObject.SetActive(false)
Then the started coroutine stops completely , Even in Inspector hold gameObject
Activation is still not continuing . In other words, although Xiecheng is MonoBehvaviour Starting up (StartCoroutine) But the position of coprogram function is completely related to MonoBehaviour It's a hierarchical , Not subject to MonoBehaviour The state of influence , But follow MonoBehaviour Scripts are just as popular as gameObject
control , It should also be with MonoBehaviour Script like every frame “ polling ” yield Whether the conditions of .
notes :WaitForSends() suffer Time.timeScale influence , When Time.timeScale = 0f when ,yieldreturn new
WaitForSecond(X) Will not be satisfied .
3、 The main applications of coprocessing are
The coroutine can't just do some simple delays , If you simply pause for a few seconds and then execute, there is no need to start a thread .
The real function of coprocessing is to do some time-consuming things step by step , For example, loading resources in the game
using System.Collections; using System.Collections.Generic; using
System.Threading; using UnityEngine; public class Test : MonoBehaviour {
private int num = 0; void Start() { StartCoroutine(Test1()); } IEnumerator
Test1() { while (num < 30) { num++; Debug.Log(num); yield return null;
Debug.Log(“————-” + num); } } void Update() { Debug.Log(“update” +
num); } void LateUpdate() { Debug.Log(“lateUpdate!” + num); } }
The above example is very simple: loading 30 Objects , If it is loaded at one time, it will get stuck , Influence the game experience . This is how we can use the synergy , The co process is every frame LateUpdate Before execution yield
return Previous code ,LateUpdate After performing yield return
Later code ( You can see from the above small example ). In this way, we can load one per frame until the loading is completed , There will be no Caton .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/149432.html Link to the original text :https://javaforall.cn
边栏推荐
- 浮点数如何与0进行比较?
- 深度学习 网络正则化
- 如何搭建一支搞垮公司的技术团队?
- LVGL 8.2 Sorting a List using up and down buttons
- go-zero微服务实战系列(九、极致优化秒杀性能)
- 大神详解开源 BUFF 增益攻略丨直播
- How to build a technical team that will bring down the company?
- Leetcode 1200 minimum absolute difference [sort] the way of leetcode in heroding
- Graduation season - personal summary
- They are all talking about Devops. Do you really understand it?
猜你喜欢

为什么国产手机用户换下一部手机时,都选择了iPhone?

IO flow: node flow and processing flow are summarized in detail.

Force button brush question 01 (reverse linked list + sliding window +lru cache mechanism)

Optimization method of deep learning neural network

flutter 报错 No MediaQuery widget ancestor found.

信号处理之一阶RC低通滤波器宏指令实现(繁易触摸屏)

IO流:节点流和处理流详细归纳。

深度学习 神经网络的优化方法

产品好不好,谁说了算?Sonar提出分析的性能指标,帮助您轻松判断产品性能及表现

UFO: Microsoft scholars have proposed a unified transformer for visual language representation learning to achieve SOTA performance on multiple multimodal tasks
随机推荐
Guitar Pro 8win10最新版吉他学习 / 打谱 / 创作
flutter 报错 No MediaQuery widget ancestor found.
Weibo and Huya advance into interest communities: different paths for peers
Building intelligent gray-scale data system from 0 to 1: Taking vivo game center as an example
Techsmith Camtasia Studio 2022.0.2屏幕录制软件
Kubernets Pod 存在 Finalizers 一直处于 Terminating 状态
They are all talking about Devops. Do you really understand it?
Numpy notes
Helix Swarm中文包发布,Perforce进一步提升中国用户体验
%s格式符
.Net之延迟队列
Comment configurer un accord
音视频技术开发周刊 | 252
I plan to teach myself some programming and want to work as a part-time programmer. I want to ask which programmer has a simple part-time platform list and doesn't investigate the degree of the receiv
一篇文章学会GO语言中的变量
函数计算异步任务能力介绍 - 任务触发去重
openresty 重定向
[C language] Pointer written test questions
Deep learning neural network case (handwritten digit recognition)
03-存储系统