Доступ к свойствам 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,

Я бы порекомендовал не применять принудительное приведение, а искать другой способ получения вашего объекта.

Другие вопросы по тегам