在那里,我正在用 C# XNA 4.0 制作一个 2D 游戏,但又遇到了我的一个小烦恼;矩形。_ 对于那些使用基本碰撞的人来说,这几乎是必须的。对于几乎所有创建的游戏对象,您都需要一个矩形。然后我去改变 X,检查碰撞,或其他任何东西。在那里我开始了永无止境的战斗objectName.Rectangle.Whatever
。为了解决这个问题,我当然提供了 objectName 类属性/方法来为我访问这些属性/方法。
那我就敢做梦了。我有宏伟的设计来制作一个基本的游戏对象类,所有可绘制的东西都将从中继承,这将允许父子关系、精确的局部坐标(浮点数),并保存纹理/精灵批次。为了完成这个,我准备从 Rectangle 继承,以使用它拥有的所有方法和属性。哎呀,每当需要一个 Rectangle 时,我都可以懒得说 objectName,而不是 objectName.Rectangle。
然后我意识到,没有机会。我一开始很沮丧,因为我非常聪明的想法被粉碎了。从那时起,我完美的小类拥有一个矩形,可以根据需要使用各种方法和属性访问它。我也借此机会让它继承自 XNA DrawableGameComponent。虽然从长远来看,这更实用,但每次我查看 draw 或 update 方法并看到对 rectangle 的调用时,我经常想知道,有没有希望做我想做的事?有没有一些我可以做的聪明的工作?或者是从一个 Rectangle 继承而来的,真的是我无法掌握的?
虽然使用 XNA 中提供的 DrawableGameComponent 类允许大多数与游戏对象相关的动作发生在类 Update() 方法中,但每次在类之外我需要引用的不是 Rectangle 的属性,而是 Rectangle 本身,我有点考虑到我的对象实际上是增强型矩形,这让我很生气。然后我又一次发现自己在问:
有没有办法从预定义的结构继承,或者给项目留下你的印象(一种变通方法)?