2016年4月5日 星期二

Unity C# 執行緒 使用方法(Thread)

Thread (執行緒) 語法:

     using System.Threading;  // 匯入 Thread 類別

    Thread 變數名稱 = new Thread(執行緒執行方法);
    變數名稱.Start();

   void 執行續方法() {
        while (執行續開關) {
            //執行緒執行動作 ........ 
        }
        執行緒.Sleep(1000);
    }

C# 以下範例程式:
執行緒注意地方 紅色標記。

using UnityEngine;
using System.Collections;
using System.Threading;

public class A {

    bool sw;   // Thread sw (執行緒開關)

    // 給值開關
    public bool setSw(bool sw) {
        return this.sw = sw;
    }

    // 取值開關
    public bool getSw() {
        return this.sw;
    }

    // A Class Thread Message (A類別執行緒執行)
    public void Message() { 

        while (sw.Equals(true)){
            Debug.Log("這是A類別執行緒");
        }
        Thread.Sleep(1000); // 暫停一秒
    }

    // close Applicaction Thread close (關掉應用程式執行緒關掉)
    public void Stop() {
        sw = false;
    }
}

public class ThreadTest : MonoBehaviour {

    Thread test1, test2; // Thread declare (執行緒宣告)
    A a = new A();       // A class declare (A類別宣告)

    public bool testSw = false;  // Thread Sw (執行續開關)

    void Update() {

        if (a.setSw(testSw).Equals(true)) {

            test1 = new Thread(a.Message);
            test1.Start();

            test2 = new Thread(Message);
            test2.Start();
        }
    }

    // close Applicaction (關掉應用程式)
    void OnApplicationQuit() {
        a.Stop();
    }

    // ThreadTest class Thread Message (ThreadTest 類別執行緒)
    void Message() {

        while (a.getSw().Equals(true)){
            Debug.Log("這是本類別執行緒");
        }
        Thread.Sleep(1000); // 暫停一秒
    }
}

-----------------------------------------------

執行結果 :



沒有留言:

張貼留言