【问题标题】:C++ game loading objects / global objectsC++ 游戏加载对象/全局对象
【发布时间】:2013-04-20 06:55:56
【问题描述】:

我还是 C++ 新手,所以如果我的问题显而易见,请原谅我。我正在(尝试)编写一个 RPG 游戏。目前一切都很好地编译,但是我现在必须考虑如何在游戏打开时加载我的所有对象(对于单元类、项目等)。

我已经看到有关在头文件中使用 extern 的 DLL 和全局对象的线程,但我想知道哪种方法最实用/最有效? (因为游戏本身只会这么大)

就目前而言,我的代码非常笨拙且实现得不好(在尝试使用函数在单独的函数中声明我的对象并想知道为什么它们不可访问之前我什至没有想到),我应该使用extern 而不是必须在 main() 中声明我的对象以实例化它们(见下文)。

#include <iostream>
#include <string>
#include "Unit.h"
#include "UClass.h"

using namespace std;

// Seperate function at program start to load class list.
void loadClass(UClass& obj)
{
    obj.load("Peasant");

}

int main() {

    //Load classes...
    cout << "Creating peasant...\n";
    UClass peasant;
    loadClass(peasant);
    cout << peasant.show() << endl;

    cout << "\nCreating unit...\n";
    Unit man;
    man.SetLvl();
    man.SetClass(peasant);
    man.ShowInfo();

    return 0;
}

再次抱歉,这是我第一次尝试多文件项目,提前感谢您!

【问题讨论】:

  • 您指的是如何 1) 加载包含用于初始化对象的数据(纹理、对话框、名称等)的资源文件,2) 以它们在跨平台可用的方式创建实际对象不同的源文件(翻译单元) 3) 完全不同的东西。
  • 一般要避免使用全局变量。你的代码对我来说看起来不错。不确定您认为 DLL 与任何东西有什么关系。
  • @Agentlien。我指的是你写的关于是的第一点。我不知道我初始化对象的方式是否效率低下(因为我必须重复多次才能包含我需要的所有对象):/
  • @john。我可能会误解,但我的意思是全局对象? (它们还会被称为变量吗?)因为我不确定这些对象是否只能从 main() 函数访问?还是我误解了>.
  • @Iskardes 不确定您在全局对象和全局变量之间有什么区别。但是您在 main 中创建的对象可以在 main 之外访问,例如,您可以在 loadClass 函数中进行访问。您在 main 中使用的 names 仅在 main 中可见,但这并不意味着它们命名的对象在 main 之外无法访问。在 C++ 中,这些应该在哪里访问的问题通常通过编写类来解决。

标签: c++ object load globalization extern


【解决方案1】:

查看标准库,您在其中定义了诸如列表之类的结构。我的想法是让您创建加载到游戏中的对象列表,并在解析几何或其他您想要的逻辑时遍历列表。我认为这是一个很好的开始。如果我正确理解了您的疑虑。

【讨论】:

  • 谢谢,我没有想到一个清单,我去看看。
猜你喜欢
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
相关资源
最近更新 更多