Unity基础知识之协程
為什么要是用攜程?
我需要計算1—10000的累加,我們應該怎么做?
1、首先我們寫一個累加方法:
public void GetAccumulationResult()
{
int accumulationResult=0;
for(int i=1;i<=10000;i++)
{
accumulationResult+=i;
}
print("1-1000的累加結果為:"+accumulationResult);
}
2、這個方法應該在哪里調用呢?
不論你是在Update(),Start()......任何一個方法里調用,都會造成系統的停頓。我們知道C#中有多線程、異步可以實現,那么在unity中如果實現讓游戲正常運行不卡頓,又能正確獲得想要的結果呢?
答案就是:Coroutine(協同程序 簡稱 協程?)
3、協程的使用
首先對累加的方法進行改造
IEnumerator GetAccumulationResult()
{
????????int accumulationResult=0;
???????for(int i=1;i<=1000;i++)
????????{
????????????????accumulationResult+=i;
????????????????yield return null; //下一幀再執行后續代碼
????????}
????????print("1-1000的累加結果為:"+accumulationResult);
}
在Update方法中調用
void Update()
{
????????????if (Input.GetKeyDown(KeyCode.Space))//按下空格執行
? ? ? ? ? ? {
? ? ? ? ?????????print("游戲正常運行-1");
?????????????????StartCoroutine("GetAccumulationResult"); //協程開始
? ? ? ? ? ????????print("游戲正常運行-2");
? ? ? ? ? ?}
}
游戲運行后按3次空格
控制臺德輸出結果是這樣的:
游戲正常運行-1
游戲正常運行-2
游戲正常運行-1
游戲正常運行-2
游戲正常運行-1
游戲正常運行-2
1-1000的累加結果為:500500
1-1000的累加結果為:500500
1-1000的累加結果為:500500
總結
以上是生活随笔為你收集整理的Unity基础知识之协程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Unity面试】 Unity基础核心
- 下一篇: Unity 基础资源知识汇总学习