好吧,我不确定耦合是否真的描述了我的问题.问题是,我正在创建自己的基于食人魔的3D游戏引擎.我也使用物理库PhysX,但是因为我需要在我的主引擎代码和PhysX之间创建一个抽象层 - 所以万一我们可以使用另一个物理引擎 - 我决定创建一个包装器,Quantum.
所以食人魔有一个实体类,它将控制屏幕上的实体
PhysX还有一个PxActor类,其中包含有关PhysX工作中actor位置的信息.
量子包装器将具有QEntity类,它将充当引擎和PhysX之间的层
最后,引擎将有一个Entity类,至少有两个成员,食人魔实体对象和量子实体.在每一个上update()它都会询问QEntity是什么,并更新食人魔的实体位置.
发现问题?一个实体有4个班级?请记住,我们需要访问所有四个实体至少60次/秒!那么数据分区呢?没有真正优化.此外,可能会有更多的类,一个用于AI,一个用于脚本引擎......
使用多个类的对象在多个上下文中表示同一事物本身并不是一件坏事。事实上,如果您在所有这些上下文中使用同一个对象,例如通过创造性地使用多重继承,情况可能会更糟。
您的QEntity类已经为您解耦了 - 只要您对其接口进行编程,并且不让特定于*PhysX的接口“突出”的类,您就可以了。QEntity
看起来您的项目在“桥”类中引入了耦合,这正是它所属的地方。只要你保留它,你的设计就不会有耦合问题。
至于 60 FPS,在设计阶段不必太担心。只要不存在依赖虚拟函数的冗长的责任链,您的编译器就应该能够为您做好优化工作。
*例如,QEntity不应接受特定于 的参数或返回对象PhysX,除非在创建“包装器”的构造函数中。
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |