首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Unity3D中使用多线程实现人工智能

如何在Unity3D中使用多线程实现人工智能
EN

Stack Overflow用户
提问于 2015-08-21 07:34:37
回答 2查看 6.3K关注 0票数 1

我正在用人工智能做一个Unity3D国际象棋游戏。

我的游戏屏幕卡住了,而AI正在寻找一个好的移动。

人工智能通常需要5~30秒的时间才能思考。

我知道这是因为我的CPU资源致力于计算AI。

但是我打开任务管理器,我发现我的游戏只使用了50%的CPU,可能是因为我的电脑是英特尔核心2,并且有2个线程。

所以我想的是:

团结(或C#)是否有可能在一个线程中进行AI计算,并在另一个线程中保存游戏?

因此,玩家将不会看到卡住屏幕,而人工智能正在计算。

我听说过代表或事件,但我仍然不知道多线程之间的关系。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-21 15:34:04

您应该创建一个模型,该模型使用不引用Unity的类(编写的类)来表示您的游戏状态。这些课程应该只代表你的作品,以及它们在董事会中的位置。然后,您可以将该模型传递给运行在单独线程中的AI代码,在该线程中,它可以对模型进行评估并修改其以表示新的游戏状态。然后编写一些控制器代码,将模型映射为对GameObjects的调用(在联合的情况下是视图)。

通过以这种方式将模型从视图中分离出来,您可以获得各种优势,请参见:MVC

您可以使用.Net线程API来创建您的线程来执行AI处理,并且您可能希望使用Latch来控制游戏代码和AI线程之间的同步。请参阅:NET框架System.Threading

票数 5
EN

Stack Overflow用户

发布于 2016-08-13 01:42:27

统一的API不是线程安全的,您必须在主线程中执行它们。嗯,您可以在Asset上试用这个包,这将帮助您更容易地使用线程。http://u3d.as/wQg --您只需使用一行代码就可以启动线程并安全地执行Unity。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32134789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档