Cocos2d сохраняет объект в С#

У меня есть метод, который настраивает 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 для С#? Или может кто-нибудь помочь мне найти другое решение?

заранее спасибо


person user819640    schedule 17.03.2012    source источник


Ответы (1)


«обойти проблему, добавив сохранение» звучит так, как будто вы не понимали управление памятью ObjC (в то время).

Я бы исследовал возможность того, что сохранение в коде ObjC неправильно для начала. Поскольку в C# нет сохранения, а объект, по-видимому, освобождается в C#, это означает, что нет ссылок, удерживающих объект, поэтому он будет удален сборщиком мусора. Это указывает на то, что сохранение в версии ObjC устранило вашу проблему с выпуском объекта, но у вас может быть утечка памяти.

Если вы сможете понять, как правильно исправить проблему в ObjC, вы также будете знать, что делать, чтобы исправить ее в версии C#.

person LearnCocos2D    schedule 17.03.2012
comment
Спасибо за помощь. Я пытался воспроизвести анимацию из основного класса игры, и она отлично работает, похоже, единственная проблема заключается в том, что я пытаюсь запустить анимацию из класса AnimalClass (я передаю ее классу через метод). Он наследует CCNode и имеет спрайты для запуска анимации, так почему сборка мусора очищает его от меня? - person user819640; 17.03.2012