2012-03-24 93 views
3

我試圖在Unity3d中實現多線程腳本執行,但似乎沒有辦法提供Unity的庫,我們必須使用Mono提供的System.Threading。但他們提到Unity腳本不是線程安全的。Unity3d中的多線程腳本調用

我可以在Unity3D中使用System.threading或其他Platform獨立API在Unity3D中安全高效地實現多線程嗎? 另外我怎樣才能確保腳本並行運行?

一個例子或鏈接將不勝感激。

問候

+0

糟糕,我很少使用協程,並一直認爲它們像其他語言的線程一樣 - 學到了一些東西:-)。我刪除了我的答案,因此您更有可能從其他人那裏獲得答案。 – Kay 2012-03-26 08:13:29

+0

正確的說,協程完全沒有連接線程。 – Fattie 2016-02-05 18:28:47

回答

5

我需要穿的iOS應用程序,不幸的是我從來沒有發現一種方式,統一做這樣。但是你可以編寫一個使用線程的插件。在我的應用程序中,我需要線程來定時音樂應用程序,所以我編寫了一個音頻插件庫,它使用xcode中的核心音頻,並且可以在其中執行所有線程。但是管理Unity和插件之間的同步是非常痛苦的。

+0

是的,我想我可能需要爲它編寫一個插件:S但是爲了使平臺獨立,我需要通過一些過程來完成它,以便它對所有平臺都是穩定的。 – Orochi 2012-03-28 11:29:19

1

一般而言,您可以自由使用多線程。但是有一個重要的警告:所有對Unity API的調用都必須從主線程完成。所以,可以隨意使用線程進行AI,路徑查找等等。最後,您需要將計算結果傳回主線程。

Unity爲有時有用的線程提供了一種替代方法:coroutines。它們允許你以分段方式運行你的函數(yield和resume),並且所有的都是從主線程完成的,所以你可以利用Unity API。但請注意,它們不適合繁重的計算。