要在Unity 執行多執行緒時有兩個方法 

1.StartCoroutine 的方法 。

2.使用C#的 Threading 。

1.StartCorotine

基本上是假的多執行緒,利用Unity的 IEnumerator 為介面主要掛載在 MainThread 之下運行。

運行大量資料還是會頓一大下!
使用方法  

//=======================================

IEnumerator myFunction()

{   

DoSomething();

// delay 等候時間
yeild return new WaitForSeconds( float 秒數 );
 // 暫時跳離 function,下次 call 從這邊起始

yeild return null;

   // 直接跳離並結束 function
yeild break;

}

//=======================================

之後如果要使用 必須在 function 前 加上 StartCoroutine。

StartCoroutine(myFunction());

或是

StartCoroutine(myFunction(參數));  //只能使用一個參數

而如果要結束則使用 StopCoroutine ( "myFunction" );

會可以當作多執行緒使用是因為他可以在 MainThread 之中,短暫的先執行一下 StartCoroutine 就會有多工的假象。 

 

2.Threading

這個就是真的執行緒了~在腳本最上面先 using System;

 之後宣告一個Thread

//=======================================

using System;

public Thread m_thread;

void Start(){

m_thread = new Thread(new ThreadStart(myFunction));       //不可傳入參數

m_thread.Start();

}

//=======================================

主要控制的有是否背景執行   m_thread.IsBackground   <==bool 

如果是要執行一個Function 執行完就關掉 , 就是在 執行完不理他XD

如果要一直重新執行就再New一個Thread 一樣指定 myFunction 即可~

有一個必須注意的點是~在 Thread 的 Function 裡面,不能使用到Unity內建的函式或是控制 GameObject

否則會出錯

 

 

文章標籤
全站熱搜
創作者介紹
創作者 alanveoyo 的頭像
alanveoyo

遊戲成長日記

alanveoyo 發表在 痞客邦 留言(0) 人氣(1,740)