Unity3d中的多线程脚本调用

时间:2012-03-24 13:36:19

标签: c# multithreading unity3d unityscript boo

我试图在Unity3d中实现多线程脚本执行,但似乎Unity库没有办法提供,我们必须使用Mono提供的System.Threading。但是他们已经提到Unity Scripting不是线程安全的。

我可以使用System.threading或其他独立于平台的API在Unity3D中安全有效地实现多线程吗? 另外,我如何确保脚本并行运行?

一个例子或链接将受到高度赞赏。

此致

2 个答案:

答案 0 :(得分:5)

我需要为iOS应用程序进行线程化,遗憾的是我从未在Unity中找到过这样的方法。但是你可以编写一个使用线程的插件。在我的应用程序中,我需要线程来为音乐应用程序计时,所以我编写了一个音频插件库,它使用xcode中的核心音频,你可以在那里完成你想要的所有线程。但是管理Unity和插件之间的同步是非常痛苦的。

答案 1 :(得分:1)

一般来说,您可以自由使用多线程。但有一个重要的警告:所有对Unity API的调用都必须从主线程完成。所以,随意使用线程进行AI,路径查找等等。最后,您需要将计算结果传回主线程。

Unity提供了线程的替代方案,有时很有用:coroutines。它们允许您以片段(yield和resume)运行您的函数,所有这些都是从主线程完成的,因此您可以使用Unity API。但请注意,它们不适合繁重的计算。