ios - 试图添加一个已经有父节点 : <SKScene> name :'(null)' frame:{{0, 0}, {1, 1}} 的 SKNode

标签 ios singleton

我添加了我的声音管理器(在我的游戏中播放声音是单例的)并且遇到了这个问题:

试图添加一个已经有父节点的 SKNode:name:'(null)' frame:{{0, 0}, {1, 1}}'

@property (strong, nonatomic) VSSoundSystem *soundSystem;

in - (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 - 试图添加一个已经有父节点 : <SKScene> name :'(null)' frame:{{0, 0}, {1, 1}} 的 SKNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25412096/

相关文章:

ios - 如何检测 textDidChange : on UISearchBar was triggered by dictation

ios - 可以从我的应用程序启动 Apple 的默认天气应用程序吗?

ios - 如何从一行开始并在新 View Controller 中显示该行的名称?

ios - 授权未知金额的交易,并在以后收取服务费用

iphone - obj c uiwebview 响应式 html

iphone - Objective C 中的 Singleton 问题

ios - 单例+初始化代码

asp.net - 简单注入(inject)器 ASP.NET Singleton Dispose

c++ - 单例:析构函数怎么会被调用两次?

C++/CLI 中的单例示例?