C# 在Unity中使用多线程生成对象
我是一个初学者程序员。我想创建一个类似于中间件的Objectspawner,它在多线程中处理寻路脚本,然后将其传递回Gameobject执行。基本上,每个调用寻路的对象的计算过程都将由不同的线程处理。我应该学习什么来创建它?虽然可以在Unity中启动单独的线程,但它自己的API不支持来自它的主线程的任何其他线程的调用,它在主线程中执行脚本。实例化对象是不在主线程中时最不希望执行的操作。为什么您认为您需要线程?这是可能的。您可以在另一个线程中使用Unity的结构和数学API,如C# 在Unity中使用多线程生成对象,c#,multithreading,unity3d,artificial-intelligence,path-finding,C#,Multithreading,Unity3d,Artificial Intelligence,Path Finding,我是一个初学者程序员。我想创建一个类似于中间件的Objectspawner,它在多线程中处理寻路脚本,然后将其传递回Gameobject执行。基本上,每个调用寻路的对象的计算过程都将由不同的线程处理。我应该学习什么来创建它?虽然可以在Unity中启动单独的线程,但它自己的API不支持来自它的主线程的任何其他线程的调用,它在主线程中执行脚本。实例化对象是不在主线程中时最不希望执行的操作。为什么您认为您需要线程?这是可能的。您可以在另一个线程中使用Unity的结构和数学API,如Vector3、Ve
Vector3
、Vector2
和Mathf
获取对象的位置,将其存储在Vector3
或Vector2
中,然后启动一个新线程并将该Vector
传递给它。您可以在新线程中完成所有寻路工作
每当您需要更新对象的位置或使用新
线程中修改的向量时,请使用my other中的UnityThread.executeInUpdate
函数执行此操作。此函数允许您从另一个线程调用Unity API。如果你不想使用我的,你可以制作你的,或者你可以阅读该帖子是如何制作的,然后自己制作。每个对象使用一个线程不是一个好主意。我不知道单元是如何处理线程的,但是创建线程需要花费大量的时间,最好少启动线程,在一个线程上处理多个路径。是的,我刚刚意识到这一点。我想我用了一个错误的表达。你可以在统一中使用新的工作制度。我不确定它是否已经推出,但如果是这样,这将大大简化您的任务。使用多线程的主要原因是什么?对于多线程,应该有两种可能的替代方法。是的。我知道Unity API不支持多线程。比较单线程和多线程是我任务的一部分。它就像一个程序,在多线程中处理AI scipt,并将其传递给NPC对象执行。是否可以在线程中处理脚本行为,然后在主线程中实例化对象?这是可能的,但需要处理线程之间的争用条件。如果你的应用程序只需要运行一次就可以通过,那么你可以在主线程中存储一个列表,但请记住,当你开始从多个线程修改列表时,可能会发生一些不好的事情