如何在unity3d中使用c#threads for android平台?

时间:2014-03-03 00:57:39

标签: multithreading unity3d coroutine

我需要在线程中加载文件,场景和播放动画.. 尝试在Android中通过www加载文件... 如何通过线程做其他事情? 但是为什么游戏引擎不允许我们创建线程呢? 或者我的理解是错的? 如何在UNITY3D中创建线程?

3 个答案:

答案 0 :(得分:6)

您可以在Unity中使用线程,但引擎不是线程安全的。通常,您运行分离的线程(来自Unity UI)来执行长时间运行的进程并检查结果(您无法从工作线程与Unity交互)。 常见的方法是使用一个代表线程作业的类,它将由Unity主线程初始化。然后你在该类的函数上启动一个工作线程并让它完成它的工作(Coroutines在Unity主线程上运行所以不是真正的线程。关于Coroutines的最佳文章是here

以上是上述方法的一个示例(参见接受的答案):

http://answers.unity3d.com/questions/357033/unity3d-and-c-coroutines-vs-threading.html

您可能还想尝试UnityGems包,它可以实现相同的效果但提供方便(例如关闭支持)。见this page

HTH。 最好!

答案 1 :(得分:3)

根据我自己对Unity的个人经验,你不能创建/运行一个单独的线程,除非该线程不使用任何Unity的api。所以这意味着没有游戏对象或类似性质的东西。我已经成功完成了自己的寻路,所以我知道这是可能的。祝好运!我希望这会有所帮助。

答案 2 :(得分:0)

Unity3D中常用的方法是使用Coroutines

IEnumerator DoSth()
{
    ...
    yield retrun ... ;       
}

致电/消费协程:

StartCoroutine(DoSth());  // OK
StartCoroutine("DoSth");  // Also fine
StopCoroutine("DoSth");   // You can stop it as well