0

我正在尝试访问/修改SCNSphere我在SCNScene. 我将场景预设为一个名为“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

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

4

2 回答 2

2

当您创建对象SCNNode时,您正在转换。SCNSphereearth

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

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

通过强制转换,您可以假装对象是SCNSphere,但事实并非如此。当您向materials对象发送消息时,它会崩溃,因为它是一个无法识别的选择器SCNNode

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

于 2016-11-02T18:35:12.737 回答
2

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

于 2016-11-02T19:04:22.980 回答