我正在尝试用 C++ 编写我的第一个游戏引擎,这将类似于 Unity 脚本的工作方式。我正在尝试制作一个组件系统。这是我的问题:
我想要一个包含我的组件的向量,因为我可能需要动态添加一些。问题发生的地方是当我想添加我的 Component 类的派生类时。这是一个例子:
std::vector<Component*> components;
有了这条线,我无法做到这一点(我希望能够做到):
gameObject.GetComponent<TextRenderer>().text [...]
我仍然需要学习很多东西,真诚地我完全不理解这部分代码(我不懂模板,也找不到好的教程)代码,但这是我的 GetComponent 函数:
template<typename T>
inline T* GetComponent()
{
for (int i = 0; i < components.size(); i++)
if (typeid(components[i]) == typeid(T))
{
std::cout << "Found Component." << std::endl;
return (T*) &components[i];
}
}
此函数不起作用,它什么也不返回和/或有转换问题。