Unity 的 "MonoBehaviour Components" 是否等同于实体-组件-系统设计模式的系统?
Are Unity's "MonoBehaviour Components" equivalent to systems from the Entity-Component-System design pattern?
我正在制作一个非常简单的 2D 游戏引擎,并且正在重做我的实体以使其工作起来有点像 Unity 的系统。我一直在研究实体-组件-系统设计模式 (ECS) 的工作原理,并且我开始更好地理解它。
据我了解,ECS 中的 组件 仅保存数据,除了保留该数据外无法执行任何操作。然后,系统 使用这些组件来读取和操作它们的数据。
这让我怀疑在 Unity 中附加到 GameObject 的 MonoBehaviour 脚本是否在技术上是系统而不是组件,因为它们在 Unity 编辑器中被调用?
如果我记错了,我想分析一下ECS的真实实现对我会有帮助。我在 Java 中编码,所以如果有人有任何用 Java 或 C# 实现的 ECS 系统的示例,那将是很棒的,因为我看到的大多数示例都是用 C++ 编写的,这有点多我很难理解。
谢谢!
尽管使用术语 "Component.",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 非常高效,可以为您解决很多问题。
unity中的单声道系统可以称为EC(entity-component),它是基于Object-oriented设计的。
ECS(entity-component-系统)基于Data-oriented设计。
单声道组件中既有数据也有逻辑。
我正在制作一个非常简单的 2D 游戏引擎,并且正在重做我的实体以使其工作起来有点像 Unity 的系统。我一直在研究实体-组件-系统设计模式 (ECS) 的工作原理,并且我开始更好地理解它。
据我了解,ECS 中的 组件 仅保存数据,除了保留该数据外无法执行任何操作。然后,系统 使用这些组件来读取和操作它们的数据。
这让我怀疑在 Unity 中附加到 GameObject 的 MonoBehaviour 脚本是否在技术上是系统而不是组件,因为它们在 Unity 编辑器中被调用?
如果我记错了,我想分析一下ECS的真实实现对我会有帮助。我在 Java 中编码,所以如果有人有任何用 Java 或 C# 实现的 ECS 系统的示例,那将是很棒的,因为我看到的大多数示例都是用 C++ 编写的,这有点多我很难理解。
谢谢!
尽管使用术语 "Component.",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 非常高效,可以为您解决很多问题。
unity中的单声道系统可以称为EC(entity-component),它是基于Object-oriented设计的。 ECS(entity-component-系统)基于Data-oriented设计。 单声道组件中既有数据也有逻辑。