添加 SK3DNode 在 iPhone 5 秒或更长时间内使应用程序崩溃
Adding SK3DNode Crashes app on iPhone 5s or higher
我正在尝试将 3D 模型添加到 SpriteKit 项目,但它立即崩溃,调试信息很少 [编辑:仅在 iPhone 5 秒或更高,iPhone 5 或更低工作正常!],我不确定发生了什么。
我从 Xcode 中的 SpriteKit 默认项目开始,然后从 Xcode 默认 SceneKit 项目中复制 ship.dae 文件。
这是我创建和添加 SK3DNode
:
的代码
SK3DNode *shipNode = [[SK3DNode alloc] initWithViewportSize:CGSizeMake(30, 30)];
SCNScene *shipScene = [SCNScene sceneNamed:@"ship.dae"];
[shipNode setPosition:CGPointMake(self.size.width/2,self.size.height/2)];
[shipNode setScnScene:shipScene];
[self addChild:shipNode];
当这个项目是 运行 时,它会立即崩溃:
Thread 1: EXC_BAD_ACCESS(code=1, address=0x174)
如果我注释掉 addChild:
或 setPosition:
,那么它不会崩溃,但模型也不会出现。
有什么想法吗?
这似乎是 64 位代码或编译器中某处的错误,但在 32 位代码中不存在。
将构建设置中的架构设置更改为 $(ARCHS_STANDARD_32_BIT)
修复了所有设备上的崩溃问题。
我暂时保留它,希望有更好的解决方案或修复出现...
问题是场景渲染器需要初始化。此代码修复它;请注意,NSLog 语句是必需的,没有它,应用程序仍然会崩溃。
id s1 = [sk3DNodeFist valueForKey:@"_scnRenderer"];
NSLog(@"%@", s1);
我正在尝试将 3D 模型添加到 SpriteKit 项目,但它立即崩溃,调试信息很少 [编辑:仅在 iPhone 5 秒或更高,iPhone 5 或更低工作正常!],我不确定发生了什么。
我从 Xcode 中的 SpriteKit 默认项目开始,然后从 Xcode 默认 SceneKit 项目中复制 ship.dae 文件。
这是我创建和添加 SK3DNode
:
SK3DNode *shipNode = [[SK3DNode alloc] initWithViewportSize:CGSizeMake(30, 30)];
SCNScene *shipScene = [SCNScene sceneNamed:@"ship.dae"];
[shipNode setPosition:CGPointMake(self.size.width/2,self.size.height/2)];
[shipNode setScnScene:shipScene];
[self addChild:shipNode];
当这个项目是 运行 时,它会立即崩溃:
Thread 1: EXC_BAD_ACCESS(code=1, address=0x174)
如果我注释掉 addChild:
或 setPosition:
,那么它不会崩溃,但模型也不会出现。
有什么想法吗?
这似乎是 64 位代码或编译器中某处的错误,但在 32 位代码中不存在。
将构建设置中的架构设置更改为 $(ARCHS_STANDARD_32_BIT)
修复了所有设备上的崩溃问题。
我暂时保留它,希望有更好的解决方案或修复出现...
问题是场景渲染器需要初始化。此代码修复它;请注意,NSLog 语句是必需的,没有它,应用程序仍然会崩溃。
id s1 = [sk3DNodeFist valueForKey:@"_scnRenderer"];
NSLog(@"%@", s1);