Cocos2d在C#中保留一个对象

本文关键字:保留 一个对象 Cocos2d | 更新日期: 2023-09-27 18:28:02

我有一个方法可以为我的设置CCAnimation

public CCAnimation SetupAnimations(string prefixOFSprite, int numberOfFrames, int startFrame)
    {
        //me getting desperate and doing any old initilisation
        CCAnimation finalAnimation = new CCAnimation();
        finalAnimation = CCAnimation.animation();
        for (int i = startFrame; i < numberOfFrames + 1; i++)
        {
            finalAnimation.addFrameWithFileName(prefixOFSprite + "-" + i);
        }
        float delay = 0.07f;
        finalAnimation.setDelay(delay);
        return finalAnimation;

我称之为

whiteDogBeginFalling = SetupAnimations("GameGraphics/dog/falling/white-falling", 7, 1)

但当我运行游戏时,动画不会播放:(这是我从iOS移植游戏,我通过添加解决了这个问题

[whiteDogBeginFalling retain]

直接在方法调用之后。

你是如何在cocos2d的C#版本中做到这一点的?或者有人能帮我想出另一个解决方案吗?

提前感谢

Cocos2d在C#中保留一个对象

"通过添加retain来解决问题"听起来像是你(当时)不了解ObjC内存管理。

我会调查ObjC代码中的保留一开始就错误的可能性。由于C#中没有保留,而且对象显然是在C#中释放的,这意味着没有对对象的引用,因此它将被垃圾收集。这表明ObjC版本中的retain修复了释放对象的问题,但可能存在内存泄漏。

如果你能在ObjC中找到如何正确解决这个问题,你也会知道在C#版本中该怎么解决。