首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问SCNSphere属性

访问SCNSphere属性
EN

Stack Overflow用户
提问于 2016-11-02 18:25:35
回答 2查看 164关注 0票数 0

我正在尝试访问/修改我在SCNSphere中拥有的SCNScene属性。我把场景预置为一个名为"spaceScene.scn“的文件。我要把现场装成这样

代码语言:javascript
复制
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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-02 19:04:22

SCNSphere而不是继承SCNNode。您应该更愿意检索节点的geometry,它可以是一个球形。

票数 2
EN

Stack Overflow用户

发布于 2016-11-02 18:35:12

在创建SCNNode对象时,您正在将earth转换为earth

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

代码语言:javascript
复制
- (SCNNode *)childNodeWithName:(NSString *)name 
                   recursively:(BOOL)recursively;

使用强制转换,您可以假装对象是SCNSphere,但是它不是。当您向对象发送materials消息时,它会崩溃,因为它是SCNNode上一个无法识别的选择器。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40387177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档