我在问自己,你如何在游戏引擎中实现一些东西,用户只需定义一个类并可以编译。也许让我用一些代码来详细说明,这只是游戏引擎的用户所做的:
#include <engine.h>
class game : engine::application
{
void main_loop() override;
void initialize() override;
void destruct() override;
};
我如何实现它,游戏引擎可以被编译成一个库或各种包,引擎仍然能够访问一个示例或类似于这个游戏类的单例。所以首先你要编译引擎,然后才能在游戏中使用它。
我尝试了一个使用extern
关键字的方法,用户只需定义一个这样的函数:
engine::application* get_game() {return new game();}
但它的使用相当混乱,就像我不知道为什么,但你必须写代码,使用这个函数在头文件中,原因当你编译代码在源文件中,它不会知道这个函数,并说未定义和东西。我也做了一些研究,但在这个问题上没有发现任何东西。
1条答案
按热度按时间hrirmatl1#
你可以从几个单元测试框架中获得灵感。通常有一些宏来定义测试用例。通常这些会导致创建一个全局对象,该对象访问存储有关已注册单元测试的信息的单例。(Boost测试和GoogleTest都是这样做的。
在你的例子中,你只需要为一个示例修改它,在游戏实现中你需要做的就是这样的事情(在这个演示中,
application
被简化为一个成员函数)。game.cpp
引擎实现
我在这里使用一个cmake项目,并假设使用MSVC for Windows(未测试其他编译器/系统)。
CMakeLists.txt
engine.hpp