要在Unity 執行多執行緒時有兩個方法
1.StartCoroutine 的方法 。
2.使用C#的 Threading 。
1.StartCorotine
基本上是假的多執行緒,利用Unity的 IEnumerator 為介面主要掛載在 MainThread 之下運行。
運行大量資料還是會頓一大下!
使用方法
//=======================================
IEnumerator myFunction()
{
DoSomething();
yeild return null;
}
//=======================================
之後如果要使用 必須在 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
否則會出錯