java - Unity的 "MonoBehaviour Components"相当于实体-组件-系统设计模式中的系统吗?

标签 java unity-game-engine components entity composition

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

据我了解,ECS 中的组件仅保存数据,除了保留该数据之外无法执行任何操作。然后,系统使用这些组件来读取和操作其数据。

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

如果我错了,我认为分析 ECS 的真实实现会对我有所帮助。我用 Java 编码,所以如果有人有任何用 Java 或 C# 实现的 ECS 系统的示例,那就太好了,因为我见过的大多数示例都是用 C++ 编写的,这对我来说有点难以理解。
谢谢!

最佳答案

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

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

关于java - Unity的 "MonoBehaviour Components"相当于实体-组件-系统设计模式中的系统吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50632898/

相关文章:

java - 更改 Netbeans 平台主窗口背景颜色

java - java代码备份和恢复Hsqldb数据库

c# - 服务器和 Unity 应用程序之间的通信

Coldfusion - 组件未定义

javascript - Angular,将来自组件的输入注入(inject)我的标题

java - OSGi 列表,那些 header 是什么?

java - 排序后,如何在 Netbeans swing 大纲(树表)中保持搜索结果一致?

c# - Unity 播放暂停音频效果不佳

c# - 如何在 Unity 中为 Material 分配纹理

javascript - react : Pass function with a given argument to child