【发布时间】:2021-09-26 18:57:23
【问题描述】:
我们的轻量级游戏引擎需要保持其二进制大小。
但是,我们必须在现有引擎代码中添加一些编辑器代码。例如:
class Material {
public:
#some engine code
bool InitWithMaterialSourceCode();
public:
# some code only used in editor mode
void SetMaterialCachePath();
std::string material_source_file_path;
std::string GetMaterialSourceCode();
}
一些接口和变量只在编辑器模式下使用。我应该如何安排这些代码?
以下是我的想法:
1、继承。在编辑器模式下使用子类,其中所有使用父类的代码行都需要修改。
2,重复。再写一个编辑器模式的类,好像违反了软件工程的规则。
【问题讨论】:
-
你能澄清一下“编辑器代码”是什么意思吗?您的引擎是否有一个需要您的类提供额外功能/属性的编辑器?这些属性对常规引擎代码有影响吗?我认为,这个决定很大程度上取决于您当前的设计。
-
提供的信息太少,无法给出好的建议,但对我来说,如果您尝试解决正确的问题,这会引起关注。也许你可以将你的材料分解成更小的类。一个只用于渲染,也可能是一个带有缓存策略的工厂类。
-
@OutOfBound 有些情况代码应该放在Material类中,例如
GetMaterialSourceCode,因为只有在编辑器模式下运行才需要保留这个接口。 -
@heLomaN 您能否提供此类函数的最小示例以及它在编辑器和引擎中的使用方式(仅类存根和伪代码函数)。如果没有更多关于您的设计的知识,真的不可能给出好的建议。
标签: c++ game-engine system-design