EDYCJA: OK, więc dzieje się tak nawet przy pustej scenie SpriteKit! Co tu może być nie tak? Dlaczego iOS potrzebuje 2 sekund na wyświetlenie sceny SpriteKit?Zatrzymaj się podczas prezentacji ViewController za pomocą SKScene
EDYCJA 2: Po raz pierwszy klikam na pasku zakładek, aby wyświetlić kontroler widoku z SKScene, który wyświetla się natychmiast, ale za każdym razem, gdy spróbuję wrócić do tego kontrolera widoku, wyświetlenie zajmie 2 sekundy!
Mam kontroler pasek kart w mojej aplikacji z wieloma różnymi viewControllers.
Jeden z nich zawiera scenę SpriteKit, z kilkoma węzłami, z których 5 nie jest za ciężkie.
W symulatorze wszystko jest w porządku, ale podczas testowania na urządzeniu zauważyłem, że kiedyś nastąpił duży postój (około 2 sekundy!) Przy przejściu na ViewController ze sceną SpriteKit.
Inne czasy nie występują, a widok jest wyświetlany natychmiast.
Teraz wiem, że musi być coś, co robię źle tutaj, ponieważ iOS powinien z pewnością sobie z tym poradzić.
To jest moja funkcja viewDidLoad wewnątrz viewController ze sceną 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)
}
}
ty wstępnego ładowania graficzna spróbować przekręceniem swoje grafiki pierwszym użyciem tekstur atlasu lub staramy się wyciągnąć cały rysunek w oddzielnym rysunku wątek OpenGL zależy od wielkości grafiki (szerokość i wysokość) nie od liczby grafik po drugie, dlaczego Dodajesz widok do kontenera root, spróbuj najpierw dodać widok, a potem następny i dalej rysunek – dragoneye
. Zdarza się, że dzieje się tak nawet przy całkowicie pustej scenie! więc nie sądzę, że problem dotyczy grafiki. Jest to również bardzo niespójne ... Czuję, że powinienem ustawić flagę buforowania lub coś, co to naprawić ... – deloki
czy próbowałeś najpierw dodać widok, potem scenę, a potem Gfx – dragoneye