我添加了声音管理器(在游戏中播放声音是单例),并遇到以下问题:

尝试添加已经具有父级的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 removeFromParentAndCleanup:NO]

就在您破坏旧场景之前。

关于ios - 尝试添加已经具有父级的SKNode:<SKScene>名称:'(null)'帧:{{0,0},{1,1}}',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25412096/

10-10 23:57