2017-01-24 12 views
2

Я пытаюсь программно создать SKSpriteNode и дать ему текстуру, которая находится в моей папке Assets.xcassets. Я подумал, что это будет основная процедура, но у меня, похоже, много проблем.Создайте SKSpriteNode с активом программно

Для справки, вот мой каталог активов с основным активом я пытаюсь установить на SKSpriteNode:

Asset catalog with ground asset

Вот код, чтобы сделать узел спрайтов:

sprite.texture = SKTexture(image: UIImage(named: spriteName)!) 

    sprite.anchorPoint = CGPoint(x: 0, y: 1) 

    sprite.position = CGPoint(x: 0, y: 0) 

    referenceNode.addChild(sprite) 

Переменная «spriteName» в первой строке имеет в себе строку «земля». Однако, когда я загружаю игру, земля отсутствует. Просто чтобы убедиться, что узлы на самом деле там, я прокомментировал код текстуры и просто дал им размер и видимый цвет. Это сработало, поэтому я знаю, что проблема определенно находится в ссылке на ресурсы, а не в логике кода.

Любая точка в правильном направлении была бы принята с благодарностью. Если необходима дополнительная информация, пожалуйста, спросите как можно более конкретно :)

Спасибо, Matthew

EDIT:

Мой первоначальный вопрос, возможно, был слишком сложным. Чтобы перефразировать проще:

У меня есть актив в моей библиотеке активов, называемой землей. Однако, когда я установил текстуру SKSpriteNode с помощью этого кода ...

sprite.texture = SKTexture(image: UIImage(named: "ground")!) 

текстура не отображается в приложении. Мой вопрос: как правильно ссылаться на изображение в моей библиотеке активов?

ответ

2

Похоже, вам нужно явно задать размер тоже:

sprite.texture = SKTexture(imageNamed: "myImage1") 
sprite.size = sprite.texture!.size() 

..or вы можете указать изображение в INIT:

let sprite = SKSpriteNode(imageNamed: "myImage1")