gpt4 book ai didi

c++游戏引擎设计和超出范围的对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:06 24 4
gpt4 key购买 nike

我正在使用 C++ 开发基于组件的小型游戏引擎。将各种组件添加到游戏对象对象的内部列表中,为了节省时间,我没有为这些组件创建成员变量,只有游戏对象是成员变量,如下所示:

void Initialize()
{
MeshComponent* meshRenderer = new MeshComponent(mesh, material);
m_GameObject.AddComponent(meshRenderer);
}

meshRenderer 变量被添加到 AddComponent() 的组件列表中,但在此函数结束时超出范围。

稍后(在游戏的更新/绘制循环中)该组件被调用并且一切正常,尽管该对象在初始化期间超出了范围。

我对作用域的理解有误吗,这样使用是否安全,或者我应该采取另一种方法(不必为我的每个组件创建成员变量)?

感谢您的帮助!

最佳答案

首先,我建议你在开始像游戏引擎这样的大项目之前多学习C++。

超出范围的是类型为 MeshComponent*meshRenderer 变量,即指向 MeshComponent 的指针。当指针超出范围时会发生什么?什么都没有。内存是使用 new 运算符在堆上分配的,它将一直保留在那里,直到您使用 delete 运算符取消分配它。

关于c++游戏引擎设计和超出范围的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com