Ios 已尝试添加已具有父节点的SKNode:<;SKScene>;名称:';(空)和#x27;帧:{0,0},{1,1}';

Ios 已尝试添加已具有父节点的SKNode:<;SKScene>;名称:';(空)和#x27;帧:{0,0},{1,1}';,ios,singleton,Ios,Singleton,我添加了我的声音管理器(在我的游戏中播放声音是singleton),并出现以下问题: 已尝试添加已具有父节点的SKNode:名称:'(null)'帧:{{0,0},{1,1}' @property (strong, nonatomic) VSSoundSystem *soundSystem; 在-(id)initWithSize:(CGSize)我的场景大小中: self.soundSystem = [VSSoundSystem sharedSystem]; [self addChild:se

我添加了我的声音管理器(在我的游戏中播放声音是singleton),并出现以下问题:

已尝试添加已具有父节点的SKNode:名称:'(null)'帧:{{0,0},{1,1}'

@property (strong, nonatomic) VSSoundSystem *soundSystem;
在-(id)initWithSize:(CGSize)我的场景大小中:

self.soundSystem = [VSSoundSystem sharedSystem];
[self addChild:self.soundSystem];
我需要将其作为子级添加,因为我需要运行操作

VSSoundManager初始化:

+ (id)sharedSystem {
static VSSoundSystem *sharedSystem = nil;
@synchronized(self) {
    if (sharedSystem == nil)
        sharedSystem = [[self alloc] init];
}

return sharedSystem;
}


它工作正常,但在第二级加载时崩溃

您使用的是什么框架?cocos2d? 我的猜测是,当你加载第二个关卡时,你会再次将这个单体添加到另一个场景中。 由于它是一个独生子,它可能仍然会有旧的,被破坏的场景作为父母

您可以尝试以下方法:

[self.soundSystem removeFromParent]


就在你破坏旧场景之前。

谢谢!我添加了
[self.soundSystem removeFromParent]
就在
[self addChild:self.soundSystem]之前。PS我用的是SpriteKitt很棒!因此,您可以接受答案(通过单击答案左侧的小复选标记),以便其他人知道这是有效的解决方案!
[self.soundSystem removeFromParentAndCleanup:NO]