跳转到内容

Delta3D/Page3

来自维基教科书,开放的书籍,为开放的世界

Delta3D,底层

[编辑 | 编辑源代码]

一个快速的替罪羊

Delta3D 正在开发中。有许多非常聪明的人不断地为我们添加、更改和改进这个库。他们都是海军陆战队,显然在水族馆工作。 : )

这意味着,有点不幸的是,“底层”可能会随着新的、酷炫的想法的实现而发生一些变化。

所以,我想说“以下是所有 Delta3D 应用程序的工作方式”,但这忽略了这样一个事实,即现在有各种方法来构建 Delta3D 应用程序,具体取决于你想要构建的内容。

所以,以下是 Delta3D 最基本的底层之一,但并非唯一一个。

底层

为了拥有一个游戏,你需要一个游戏循环。这是一种定时、循环的 if-then 代码块,它检查鼠标移动,更新僵尸位置,让等离子射击稍微靠近僵尸等等。

你编写自己的循环吗?绝不!那太老派了。

当你创建 Application 类的实例时,Delta3D 会为你处理这个问题。Application 类内置了一个游戏循环,以及其他函数,以便在游戏循环中执行有用的操作。

所以你会看到的第一件事之一是变量被初始化为一个 Application 吗?不!

什么?!为什么?!

因为 Application 类有虚函数,这意味着它拥有它真的、非常想实现但不知道其内部应该是什么样子的函数。这意味着你必须提供内部实现。这意味着你必须从 Application 类“派生”自己的类,然后才能创建一个新变量来存储这个游戏实例。所以很有可能,你所查看过的(或将要查看过的)大多数 Delta3D 代码,都会包含类似这样的代码

class MainApp : public dtABC::Application

这里我们的 MainApp 是我们从 Application 类派生的类(存储在 dtABC 命名空间中)

然后在 main 块中的某个地方,会有类似这样的代码

RefPtr<MainApp> app = new MainApp("config.xml");

这将创建一个新的变量 app 来存储我们的 MainApp 对象。现在 app 中包含了我们的游戏循环,可以通过以下方式启动:

app->Config();
app->Run();
华夏公益教科书