1

这是我的存储库,特别是技能系统类。我主要在 XNA 中工作,这些类可以很好地工作。

这些课程还没有完成,它们是根据上一篇文章的一些说明改进我以前的游戏的概念

我了解 Unity 的 ESC(实体组件系统)方法,并且我知道 GameObject 是什么以及组件如何工作的基础知识。

我编写的类管理诸如对单位的影响之类的东西,以及它们是如何应用的。

流程是:Behavior-> Effect->Ability

例如,IBehavior是行为的接口。

我有几个抽象类: ActivatableBehavior它是所有单个 proc 行为的抽象
TogglableBehavior,显然,可切换行为
LimitedTimeBehavior是定时行为的基础。
同样,我有DurationBehaviorTickBasedBehavior并且从LimitedTimeBehavior.

像这样的东西如何在 Unity 中实现?

如果有帮助,我的游戏应该相当简单,Little Fighter 2风格,基于服务器客户端等等......

如果这个问题太宽泛和/或不够清楚,请说出缺少的内容,我会尝试添加它!

4

1 回答 1

2

仅仅因为 Unity具有实体组件系统并不意味着您必须使用它。您可以轻松地将单个脚本附加到主摄像机并在该脚本中执行所有操作,将其视为您的主要游戏循环(我曾从事过这样的项目)。

我真的不鼓励创建Components它来描述 GameObject 的一小部分行为并与其他Components. 例如,您的所有 IBehavior 对象都将完全按照您已经在使用它们的方式使用:仅在您的 Entity 类中调用和存储。Components以自己的方式制作它们意味着在运行时将它们从 GameObjects 中附加和删除,这不是最有效的过程(删除一个使用 Unity 的Destroy()方法并将组件发送到垃圾收集,Unity 不太擅长)。

ECS Unity 在更广泛的层面上要好得多,它实现了世界和其中的参与者,将行为模式留给了在这些游戏对象的附加脚本中管理的子系统。将一种行为分成两种有好处,默认角色控制器就是一个例子。一个脚本只是简单地移动角色,第二个脚本告诉第一个脚本向哪个方向移动 这样,AI 单元和玩家只需交换输入脚本即可使用相同的电机。但是有一个单独的脚本来处理每一种输入(“这个脚本处理[E],那个[空格]”等)和子行为(“这个脚本,当附加时,会导致单元四处搜索玩家,那个让他们攻击”等)是不必要的。

您会在资产商店中找到各种 AI 系统,它们的工作方式如下:两个或三个脚本附加到游戏对象,然后有自己的内部 ECS 来管理 AI 状态机或行为树(通常是 AI 状态机、角色电机和寻路导航器),其中每个 AI 状态和动作都是一个脚本,但不是继承自Component(例如MonoBehaviour)的脚本。

于 2015-12-15T19:08:20.053 回答