我正在尝试将一个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:
,那么它不会崩溃,但模型也不会出现。
有什么想法吗?
答案 0 :(得分:0)
这似乎是64位代码或编译器中某处在32位代码中不存在的错误。
将构建设置中的架构设置更改为$(ARCHS_STANDARD_32_BIT)
可修复所有设备上的崩溃。
我现在就这样离开,希望有更好的解决方案或解决办法......
答案 1 :(得分:0)
问题是需要初始化场景渲染器。这段代码修复了它;请注意,NSLog语句是必需的,没有它,应用程序仍然崩溃。
id s1 = [sk3DNodeFist valueForKey:@"_scnRenderer"];
NSLog(@"%@", s1);