Clo*_*udL 1 c# multithreading delegates artificial-intelligence unity-game-engine
我正在制作带有AI的Unity3D国际象棋游戏.
当AI正在寻找一个好的举动时,我的游戏屏幕停滞不前.
AI通常需要大约5~30秒才能思考.
我知道这是因为我的CPU资源专门用于计算AI.
但我打开任务管理器,我发现我的游戏只使用了50%的CPU,可能是因为我的计算机是intel核心2,并且有2个线程.
所以我在想的是:
Unity(或C#)是否可以在一个线程中进行AI计算,并将游戏玩法保存在另一个线程中?
所以玩家在AI计算时不会看到卡住的画面.
我听过Delegate或Event,但我仍然不知道多线程之间的关系.
您应该使用不引用Unity API的类(您编写的)创建一个表示游戏状态的模型.这些课程应该代表你的作品,以及他们在棋盘上的位置.然后,您可以将此模型传递给在单独的线程中运行的AI代码,在该代码中,它可以对其进行评估并对其进行修改以表示新的游戏状态.然后编写一些控制器代码,将模型映射到对GameObjects的调用(Unity的情况下的视图).
通过以这种方式从您的视图中分离您的模型,您将获得各种优势,请参阅:MVC
您可以使用.Net线程API创建线程来进行AI处理,您可能希望使用Latch来控制游戏代码和AI线程之间的同步.请参阅:.NET Framework System.Threading