У меня есть проект, над которым я работал некоторое время. Я использую Sprite-Kit, но теперь хочу иметь возможность добавлять дочерний узел из быстрого файла, который отличается от файла GameScene.swift.Как добавить спрайт из другого .swift-файла?
Некоторые из основного кода от контроллера представления, который загружает GameScene показано здесь:
let skView:SKView = SKView()
let theScene:SKScene = SKScene()
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let theScene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
theScene.scaleMode = .ResizeFill //.AspectFill
var customSceneSize = CGSizeMake(2560, 1600)
theScene.size = customSceneSize
skView.presentScene(theScene)
makeFakeStuff() // prepares some sample data
}
}
Обычно я добавляю спрайты в файле GameScene.swift с помощью «self.addChild». Это не будет работать из другого файла .swift, так что я пробовал:
theScene.addChild(flyingCell)
и я попробовал:
skView.scene?.addChild(flyingCell)
Эти выполнить без ошибок, но ничего не отображается на экране. Когда я пытаюсь использовать идентичный код спрайта и помещать его в файл GameScene.swift и использовать «self.addChild», он рисует его, поэтому код спрайта (не показан) кажется прекрасным (позиция, zPosition и т. Д.). Я также сделал «flyingCell» глобальной переменной, чтобы узнать, поможет ли это ... нет. Есть идеи?
Подкласс вашего SKSpriteNode. – sangony
Зачем это помогло? – Narwhal
Таким образом, вы можете использовать свой собственный спрайт во всем своем проекте. – sangony