【问题标题】:Are Unity's "MonoBehaviour Components" equivalent to systems from the Entity-Component-System design pattern?Unity 的“MonoBehaviour 组件”是否等同于实体-组件-系统设计模式中的系统?
【发布时间】:2018-11-10 23:23:08
【问题描述】:

我正在制作一个非常简单的 2D 游戏引擎,并且我正在重做我的实体,使其工作起来有点像 Unity 的系统。我一直在研究实体-组件-系统设计模式 (ECS) 的工作原理,并且开始更好地理解它。

据我了解,ECS 中的 组件 仅保存数据,除了保留该数据之外无能为力。这些组件随后被用于读取和操作其数据的系统使用。

这让我产生疑问,在 Unity 中附加到游戏对象的 MonoBehaviour 脚本在技术上是否是系统,而不是在 Unity 编辑器中调用的组件?

如果我弄错了,我认为分析 ECS 的真实实现对我有帮助。我正在用 Java 编码,所以如果有人有任何用 Java 或 C# 实现的 ECS 系统示例,那将是非常棒的,因为我看到的大多数示例都是用 C++ 编写的,这对我来说有点难以理解。
谢谢!

【问题讨论】:

    标签: java unity3d components entity composition


    【解决方案1】:

    Unity 并不严格通过 ECS 工作,尽管使用了“组件”一词。 MonoBehaviour 形式的 Unity 组件可以同时具有数据和系统逻辑。 Unity will, in future versions, be rolling out an ECS model.

    如果您想使用当前的 Unity 版本(2018.1 及以下)并严格遵守 ECS 方法,我建议您查看Entitas and their Unity Plugin。您也可以选择构建代码、资产和场景以符合 ECS 原则,但 Entitas 非常高效,可以为您解决很多问题。

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2018-01-05
      • 2013-07-24
      • 1970-01-01
      • 2016-09-01
      • 2015-03-12
      相关资源
      最近更新 更多