访问 SCNSphere 属性
Accessing SCNSphere Properties
我正在尝试访问/修改我在 SCNScene
中拥有的 SCNSphere
的属性。我将场景预设为一个名为 "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
earth 的 materials 属性。我不断收到实例错误:
-[SCNNode materials]: unrecognized selector sent to instance 0x1701c5550
觉得这个问题有点傻,但请有人告诉我如何访问球体属性?谢谢
您在创建 earth
对象时将 SCNNode
转换为 SCNSphere
。
如果您查看文档,您正在使用的函数返回 SCNNode
。
- (SCNNode *)childNodeWithName:(NSString *)name
recursively:(BOOL)recursively;
通过转换,您可以假装对象是 SCNSphere
,但事实并非如此。当您向对象发送 materials
消息时,它会崩溃,因为它是 SCNNode
.
上无法识别的选择器
我建议不要强制转换,并寻找其他方法来检索您的对象。
SCNSphere
而非 继承自 SCNNode
。您应该取回节点的 geometry
,它可以是一个球体。
我正在尝试访问/修改我在 SCNScene
中拥有的 SCNSphere
的属性。我将场景预设为一个名为 "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
earth 的 materials 属性。我不断收到实例错误:
-[SCNNode materials]: unrecognized selector sent to instance 0x1701c5550
觉得这个问题有点傻,但请有人告诉我如何访问球体属性?谢谢
您在创建 earth
对象时将 SCNNode
转换为 SCNSphere
。
如果您查看文档,您正在使用的函数返回 SCNNode
。
- (SCNNode *)childNodeWithName:(NSString *)name
recursively:(BOOL)recursively;
通过转换,您可以假装对象是 SCNSphere
,但事实并非如此。当您向对象发送 materials
消息时,它会崩溃,因为它是 SCNNode
.
我建议不要强制转换,并寻找其他方法来检索您的对象。
SCNSphere
而非 继承自 SCNNode
。您应该取回节点的 geometry
,它可以是一个球体。