Questions tagged «game-component»

5
对游戏对象的每个实例使用DrawableGameComponent的缺点是什么?
我在很多地方都读过,应该将DrawableGameComponents保存为诸如“关卡”之类的东西或某种类型的管理器,而不是使用它们,例如,用于字符或图块(就像这个人在这里说的)。但是我不明白为什么会这样。我读了这篇文章,对我来说很有意义,但这只是少数。 我通常不会过多地关注这类事情,但是在这种情况下,我想知道为什么大多数人都认为这不是路要走。也许我想念一些东西。

2
通常如何在面向组件的系统中构建物理或图形组件?
我花了最后48个小时来阅读对象组件系统,并觉得我已经准备好开始实施它。我已经创建了基本的Object和Component类,但是现在我需要开始创建实际的组件,我有点困惑。当我用HealthComponent或基本上只是属性的东西来考虑它们时,这是很有意义的。当它作为物理/图形学组件更为通用时,我会有些困惑。 到目前为止,我的Object类是这样的(如果您注意到我应该进行的任何更改,请告诉我,这仍然是新的)... typedef unsigned int ID; class GameObject { public: GameObject(ID id, Ogre::String name = ""); ~GameObject(); ID &getID(); Ogre::String &getName(); virtual void update() = 0; // Component Functions void addComponent(Component *component); void removeComponent(Ogre::String familyName); template<typename T> T* getComponent(Ogre::String familyName) { return dynamic_cast<T*>(m_components[familyName]); } protected: // Properties ID m_ID; Ogre::String …

4
我应该使用什么技术来促进XNA GameComponents之间(或游戏中任何类型的组件之间)的通信?
我从第一个“适当的”游戏项目开始,并且不可避免地遇到障碍,试图决定XNA中的游戏组件应该如何通信。 从以前的(Java)GUI编程事件来看,处理程序和侦听器似乎是前进的道路。因此,我将拥有某种类型的事件总线,该事件总线可以接受事件注册,并可以订阅这些事件的类,并由处理程序来处理它们。例如(伪代码): class SpriteManager Update(){ if(player.collidesWith(enemy) // create new 'PlayerCollisionEvent' } class HUDManager onPlayerCollisionEvent(){ // Update the HUD (reduce lives etc) } 但是,我不确定完全完成此操作所需的代码设置(在C#中)。是什么跟踪事件(某种公共汽车?),它的结构如何? 在游戏服务上似乎也有很多提及,您可以在Game.cs主类中注册一个GameComponent,然后从引用了主要“ Game”对象的代码中的任何位置获取它。我已经使用SpriteBatch对象尝试了此操作,这看起来非常简单..但是,我看不到它像事件模型那样灵活。 以敌人死亡时为例。我们要更新游戏分数。使用服务,我可以获得对在Game1中创建并作为服务添加的StateManager对象的引用,然后将“得分”设置为新值。我认为“ onEnemyDeath”事件可以由多个类以不同的方式处理,但是由相关“敌人死亡检测”部分中的一行代码启动,比单独转换每个必需的GameComponent然后调用任何东西更好。方法是必需的。 还是这些次等策略比其他策略好? 我意识到这和游戏通信范例一样,在一定程度上是我对C#的不充分了解,但是我真的很想弄清楚这一基本知识。 更新资料 看过服务时,我不太相信它的细节-它基本上是在传递一个全局变量(据我了解)。 更新2 看过有关事件处理和测试示例代码的基础教程之后,看来事件将是我所讨论的逻辑选择。但我在所看到的示例中使用的却很少。有一些明显的原因为什么不应该这样做?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.