2015年3月31日 星期二

Unity MultiThread basic

在Unity使用多執行緒

0. 概念
關於多執行續的完整概念請自行Google
這裡我用比較簡單的方式去理解就是

每當我開一個額外的執行緒
就等於是額外去開啟一個全新的子程式

至少我自己是這樣去理解的

1. 前言
練習多執行緒的時候, 很容易因為我們的理解不正確
所以寫出會造成Unity鎖死的程式, 所以請先做好心理準備
你的Unity可能會需要強制關閉個幾次

如果可以請盡量用好一點的電腦進行練習
至少用可以很順利反覆重開Unity的電腦

2. 基礎寫法
基礎寫法被我簡單分解為兩種
一. 只跑一次的執行緒, 這種執行緒用完就拋
二. 持續存在的執行緒, 這種執行緒, 會持續存在, 直到你主動關閉

一.


二.


3. 使用Loom類別撰寫多執行緒
一.


二.


4. 使用Loom類別在副執行緒操作Unity
由於各種安全的考量, Unity決定讓設計者無法在副執行緒操作UnityEngine上的東西
因此, 如果副執行緒要對UnityEngine的東西進行操作
哪怕只是上面例子中簡單的gameobject.transform.Translate(1f, 0f, 0f);
都會被Unity直接報錯的

因此Loom類別提供了QueueOnMainThread
讓你將你希望執行的函式掛載到他自定義的佇列裡
他會通知主執行緒依序幫你執行這些函式
而且是以主執行緒的身分去執行
所以Unity不會報錯

Loom類別參考

沒有留言:

張貼留言