访问SCNSphere属性

时间:2016-11-02 18:25:35

标签: ios objective-c scenekit scnnode scnsphere

我正在尝试访问/修改SCNSphereSCNScene的属性。我将场景预设为名为" spaceScene.scn"的文件。我正在加载场景

self.sceneView.scene = [SCNScene sceneNamed:@"spaceScene.scn"];
self.sceneView.allowsCameraControl = YES;
self.sceneView.scene.rootNode.camera = [SCNCamera camera];
SCNSphere *earth = (SCNSphere *)[self.sceneView.scene.rootNode childNodeWithName:@"earth" recursively:NO];

NSMutableArray *materials = earth.materials;
NSLog(@"Materials of earth from scene: %@", materials);

我似乎无法阅读SCNSphere 地球材料属性。我不断收到实例错误:

-[SCNNode materials]: unrecognized selector sent to instance 0x1701c5550

对这个问题感到有点傻但请有人告诉我如何访问球体属性?感谢

2 个答案:

答案 0 :(得分:2)

在创建SCNNode对象时,您正在SCNSphere投射到earth

如果您查看文档,您正在使用的函数将返回SCNNode

- (SCNNode *)childNodeWithName:(NSString *)name 
                   recursively:(BOOL)recursively;

使用强制转换,您可以伪造对象为SCNSphere,但事实并非如此。当您向对象发送materials消息时,它会崩溃,因为它是SCNNode上无法识别的选择器。

我建议不要强制施放,并寻找另一种方法来检索你的对象。

答案 1 :(得分:2)

SCNSphere SCNNode继承。您应该检索可以是球体的节点geometry