Cocos2d сохраняет объект в C#
У меня есть метод, который настраивает 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]
сразу после вызова метода.
Как вы делаете это в C# версии cocos2d? Или кто-нибудь может помочь мне найти другое решение?
заранее спасибо
1 ответ
"обойти проблему, добавив сохранение", звучит так, как будто вы не понимали управление памятью ObjC (в то время).
Я бы исследовал вероятность того, что сохранение в коде ObjC неправильно с самого начала. Поскольку в C# нет сохранения, и объект, по-видимому, освобождается в C#, это означает, что нет ссылок, удерживающих объект, поэтому он будет собирать мусор. Это указывает на то, что сохранение в версии ObjC устранило проблему освобождения объекта, но у вас может быть утечка памяти.
Если вы сможете понять, как правильно исправить проблему в ObjC, вы также узнаете, что нужно сделать, чтобы исправить ее в версии C#.