在iPhone 5s或更高版本上添加SK3DNode崩溃应用

时间:2015-05-16 19:06:26

标签: ios xcode sprite-kit scenekit

我正在尝试将一个3D模型添加到SpriteKit项目中,但它会立即崩溃,只需很少的调试信息[编辑:仅适用于iPhone 5s或更高版本,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];

当这个项目运行时,它会立即崩溃:

  

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x174)

如果我注释掉addChild:setPosition:,那么它不会崩溃,但模型也不会出现。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这似乎是64位代码或编译器中某处在32位代码中不存在的错误。

将构建设置中的架构设置更改为$(ARCHS_STANDARD_32_BIT)可修复所有设备上的崩溃。

我现在就这样离开,希望有更好的解决方案或解决办法......

答案 1 :(得分:0)

问题是需要初始化场景渲染器。这段代码修复了它;请注意,NSLog语句是必需的,没有它,应用程序仍然崩溃。

id s1 = [sk3DNodeFist valueForKey:@"_scnRenderer"]; 
NSLog(@"%@", s1);