c# - 什么是阿尔忒弥斯池?

标签 c# entity components system artemis

Artemis 似乎是 ECS 的优秀框架,但至少可以说缺少文档。我是 ECS 的新手,不知道自己在做什么,但我想学习。

我的目标是在屏幕上画一些东西。我正在使用 MonoGame 和 Visual Studio 2012(与 Artemis)。我花了很多时间搜索 StarWarrior 代码,但没有成功。我找不到 SpatialFormComponent 和我想绘制的东西(例如 PlayerShip)之间的链接。

我对该问题的最佳猜测是我错误地使用了池。所以我的 2 个问题:

<强>1。阿耳emi弥斯的游泳池是什么? (AddComponentFromPool() 做什么?)

<强>2。如何使用 Artemis 在屏幕上绘制内容? (缺少的链接是什么?)

如果这个问题没有得到很好的研究,我很抱歉,但我向你保证。话虽这么说,如果您找到解决我问题的来源(我怀疑您会),那么我欢迎投反对票。

最佳答案

问题有点老,但我想回答。

  1. Object Pool是一种设计模式,它通过重用曾经创建的对象来帮助减少垃圾收集。当您使用对象时,您会从池中获取它。当您不再需要它时,将它放回池中,以便以后可以重复使用。在 gamedev 中使用对象池的最佳示例是粒子系统实现。

  2. 在 ECS 中有很多方法可以做到这一点。最简单的是创建一些 RenderableComponent,放置一些 PositionComponent 和基于这两者渲染的 RenderSystem。您可能会错过的事实是 Artemis 不提供任何渲染,它只是用于管理实体和系统。查看this wiki并在底部点赞以获取有关使用 ECS 的更多信息。

关于c# - 什么是阿尔忒弥斯池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22409800/

相关文章:

c# - 字节数组的 Base-N 编码

c# - 通用接口(interface),通用接口(interface)与泛型

reactjs - React 功能组件继承

javascript - react 无状态组件不渲染

c# - LINQ 执行查询

forms - Delphi中如何访问父窗体

c# - 将 Firebird Net 提供商集成到应用程序中

c# - 我应该在每个事务中打开和关闭套接字吗?

php - Symfony2 : Where place slug and timestamp methods?

spring-boot - Spring 启动 : How to make a field as mandatory in POST request while in PUT request it should be optional