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