1

我正在使用 OPENGL(通过处理)在 Java 中开发一个相对简单的游戏。我使用的是典型的 MVC 模式,游戏更新使用观察者模式传递给处理小程序。我想实现一个相对简单的场景图,程序的模型端可以更新,视图端可以读取。到目前为止一切都很好,但场景图对我来说是新的,而且我很难想出一种体面的方式来生成场景图。

模型端目前有两个游戏实体集合,一个用于游戏中的单位,另一个用于环境对象。我可以简单地遍历这些并生成节点以添加到场景图中。我不确定的是当这些实体之一被更改或销毁时该怎么办。我是否再次生成整个树(似乎效率很低)或者每个实体是否应该“知道”它的场景节点并能够在需要时更新它?

有没有人有关于如何生成场景图的一般建议或材料链接?

4

1 回答 1

0

无论如何,您必须在图形对象和游戏实体之间建立联系。因为否则您将无法将用户事件(如鼠标单击)从场景转换为逻辑。

所以我建议在你的模型和视图之间引入连接。而且,恕我直言,不是通过创建一个完美的 MVC 来隐藏一个,因为它会在开发的开始阶段增加太多的麻烦。只需向游戏实体添加指向图形对象的链接(或者,更好的是,与您想要对图形执行的操作的接口)应该适合您。

它可能如下所示:

interface UnitView {
   void add(Point position);
   void move(Point position);
   void remove(Point position);
   void setOnClick(Runnable callback);
}

class GlUnit implements UnitView extends GLSceneObjectOrWhateverItCalled {
    //this class implements all drawin and animation; and handles calls from model
    //through UnitView interface
}    

class Unit {
    void setView(UnitView view); // this method is called by manager which generated scene

    // here is your implementation of unit logic
}
于 2012-02-12T09:41:45.193 回答