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#版本中做到这一点的?或者有人能帮我想出另一个解决方案吗?
提前感谢
"通过添加retain来解决问题"听起来像是你(当时)不了解ObjC内存管理。
我会调查ObjC代码中的保留一开始就错误的可能性。由于C#中没有保留,而且对象显然是在C#中释放的,这意味着没有对对象的引用,因此它将被垃圾收集。这表明ObjC版本中的retain修复了释放对象的问题,但可能存在内存泄漏。
如果你能在ObjC中找到如何正确解决这个问题,你也会知道在C#版本中该怎么解决。