我正在开发一款小游戏,我需要你的帮助。在我的游戏中,当用户失去所有生命时,看到游戏结束屏幕。在那里,有一个按钮来重放将用户再次带到主场景的游戏。问题是这样做每次都会增加内存消耗。我已经看到每次用户玩游戏时我可能会创建一个场景实例,所以我想知道在SpriteKit中执行此操作的正确方法。
非常感谢。
答案 0 :(得分:0)
如果您使用的是游戏应用,那么您必须拥有模型,以及 Singleton 对象(您可以为游戏时刻和当前实例添加特殊方法),我在想。 ..如果你有,你可以添加boolValue进行检查。例如
if (gameModel.instance != nil) {
resumeGame = YES;
} else {
resumeGame = NO;
}
也许答案很粗鲁,但问题很难理解,没有例子......
答案 1 :(得分:0)
由于sprite kit中的许多情况,可能会发生内存消耗
1)你从内存中反复获取相同的纹理
2)没有从spritekit内存中正确删除你的场景实例
首先只获取一次图形,然后将它们保存在单个变量中 例如
静态SKTextureAtlas * gameAtlas = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//fetch gameAtlas only once once for class not for instance
});
3)将所有强引用设置为nil再次重新创建场景