Cocos2d在C#中保留一个对象

时间:2012-03-17 11:30:09

标签: c# windows retain cocos2d-x cocos2d-x-for-xna

我有一个为我设置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#版本中执行此操作?或者任何人都可以帮我提出另一种解决方案吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

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

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

如果你能弄清楚如何在ObjC中正确解决问题,你也会知道如何在C#版本中修复它。