【问题标题】:Cocos2d-X 3 Memory ManagementCocos2d-X 3 内存管理
【发布时间】:2025-12-20 04:15:17
【问题描述】:

我目前正在将我在 Cocos2d-X 2.2.6 中制作的游戏迁移到最新版本:Cocos2d-X 3.10,但是我有一个关于内存管理的问题:我创建了很多自己的类,它们继承自CCObject(我使用了很多 XX::create()、xx->retain() 和 xx->release() 方法来创建和销毁对象),但是由于此类已被弃用,我应该在它的地点?

我想我的问题是如何在 Cocos2d-X 版本 3 中进行自定义类的内存管理?

【问题讨论】:

标签: android ios mobile cocos2d-x cocos2d-x-3.0


【解决方案1】:

我现在正在开发 cocos2d-x 游戏。

正如 Zen 先生所说,你的类应该继承自 cocos2d::Ref。

和成员变量,使用cocos2d::RefPtr。 它使内存管理更容易,自动管理引用计数。
您无需担心实例创建后的保留或释放。

这里是sn-p。

Sample.h
class Sample : public cocos2d::Ref
{
public:
    Sample();
    ~Sample();

    void hoge();
}

UseSample.h
class UseSample : public cocos2d::Ref
{
private:
    cocos2d::RefPtr<Sample> sample { nullptr };

    void createSample();
    void useSample();
}

UseSample.cpp
void UseSample::createSample()
{
    this->sample = Sample::create(); // RefPtr increases sample retain count;
}

void UseSample::useSample()
{
    this->sample->hoge();
}

希望这能有所帮助。

【讨论】: