EDIT: Хорошо, так что это происходит даже с пустой сценой SpriteKit! Что может быть неправильным здесь? Почему для iOS требуется 2 секунды для отображения сцены SpriteKit?Остановка при представлении ViewController с SKScene
EDIT 2: В первый раз я нажимаю на панель вкладок, чтобы отображать контроллер вида с SKScene, он отображается сразу, но каждый раз, когда я пытаюсь перейти к этому контроллеру просмотра, на дисплей выводится 2 секунды!
У меня есть контроллер панели вкладок в моем приложении с несколькими разными контрольными окнами.
Один из них содержит сцену SpriteKit, с несколькими узлами, 5 из них, ничего слишком тяжелое.
В симуляторе все в порядке, но при тестировании на устройстве я заметил, что когда-то происходит большая остановка (около 2 секунд!) При переходе на ViewController со сценой SpriteKit.
Другие моменты, когда нет остановки, и сразу отображается.
Теперь я знаю, что должно быть что-то, что я делаю неправильно здесь, потому что iOS определенно сможет справиться с этим.
Это моя viewDidLoad функция внутри ViewController с spriteKit сцены:
override func viewDidLoad() {
super.viewDidLoad()
if let scene = MyScene(fileNamed:"MyScene") {
// Configure the view.
scene.switchView = switchView
let parentNode = scene.childNodeWithName("WholeObject") as! SKSpriteNode
let contentNode = scene.childNodeWithName("CenterNode") as! SKSpriteNode
addPhotoToFrame(contentNode, photoName: "woman", maskName: "circleMask")
let node1 = parentNode.childNodeWithName("node1") as! SKSpriteNode
addPhotoToFrame(zealNode1, photoName: "motherCircleImage", maskName: "circleMaskSmall")
let node2 = parentNode.childNodeWithName("node2") as! SKSpriteNode
addPhotoToFrame(zealNode2, photoName: "hairstylistCircleImage", maskName: "circleMaskSmall")
let node3 = parentNode.childNodeWithName("node3") as! SKSpriteNode
addPhotoToFrame(zealNode3, photoName: "dietCircleImage", maskName: "circleMaskSmall")
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 */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
}
вы поджимать ваши графики попытаться поджать графику сначала с помощью текстуры атласа или попытаться сделать все рисование в отдельной нити OpenGL рисунка зависит от размера графики (ширина и высота) не на количество графики, во-вторых том, почему u добавление представления в корневой контейнер наконец-то просто попробуйте добавить вид сначала, а затем следующую сцену и дальнейший чертеж – dragoneye
, что происходит, даже с совершенно пустой сценой! поэтому я не думаю, что проблема связана с графикой. Его тоже очень непоследовательно ... Я чувствую, что должен установить некоторый флаг кеширования или что-то, чтобы исправить это ... – deloki
сделал попытку добавить вид сначала, затем сцену, а затем gfx – dragoneye