当前位置:网站首页>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
边栏推荐
- 找数字
- 程序员自曝接私活:10个月时间接了30多个单子,纯收入40万
- 如何配和弦
- Who the final say whether the product is good or not? Sonar puts forward performance indicators for analysis to help you easily judge product performance and performance
- 炒股网上开户安全吗?会不会被骗。
- Is it safe to open an account online for stock speculation? Will you be cheated.
- 进制乱炖
- Redis 发布和订阅
- Cann operator: using iterators to efficiently realize tensor data cutting and blocking processing
- Techsmith Camtasia Studio 2022.0.2屏幕录制软件
猜你喜欢
Ali was laid off employees, looking for a job n day, headhunters came bad news
MP3是如何诞生的?
Why do domestic mobile phone users choose iPhone when changing a mobile phone?
Deep learning neural network case (handwritten digit recognition)
SAIC Maxus officially released its new brand "mifa", and its flagship product mifa 9 was officially unveiled!
How to match chords
Ranking list of databases in July: mongodb and Oracle scores fell the most
When synchronized encounters this thing, there is a big hole, pay attention!
03-存储系统
Programmers exposed that they took private jobs: they took more than 30 orders in 10 months, with a net income of 400000
随机推荐
Go zero micro service practical series (IX. ultimate optimization of seckill performance)
Redis 解决事务冲突之乐观锁和悲观锁
Preliminary exploration of flask: WSGI
[learning notes] matroid
Width and alignment
.Net之延迟队列
Align left and right!
LeetCode 1200 最小绝对差[排序] HERODING的LeetCode之路
PLC模拟量输入 模拟量转换FC S_ITR (CODESYS平台)
Exploration and practice of eventbridge in the field of SaaS enterprise integration
Five minutes of machine learning every day: how to use matrix to represent the sample data of multiple characteristic variables?
大神详解开源 BUFF 增益攻略丨直播
局部修改-渐进型开发
输入宽度!
Techsmith Camtasia Studio 2022.0.2屏幕录制软件
Introduction to modern control theory + understanding
十六进制
深度学习 神经网络的优化方法
力扣刷题01(反转链表+滑动窗口+LRU缓存机制)
炒股网上开户安全吗?会不会被骗。