Доступ к свойствам SCNSphere
Я пытаюсь получить доступ / изменить свойства 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
Чувствую себя немного глупо с этой проблемой, но, пожалуйста, кто-нибудь, просто скажите мне, как получить доступ к свойствам сферы? Спасибо
2 ответа
SCNSphere
не наследуется от SCNNode
, Вы должны скорее получить узел geometry
которая может быть сферой.
Вы кастуете SCNNode
в SCNSphere
когда вы создаете свой earth
объект.
Если вы посмотрите на документацию, функция, которую вы используете, возвращает SCNNode
,
- (SCNNode *)childNodeWithName:(NSString *)name
recursively:(BOOL)recursively;
С помощью кастинга вы можете притворяться, что объект SCNSphere
Однако это не так. И когда вы отправляете materials
сообщение объекту, он падает, потому что это нераспознанный селектор на SCNNode
,
Я бы порекомендовал не применять принудительное приведение, а искать другой способ получения вашего объекта.