Nadal jestem nowy w SpriteKit i chciałem sprawdzić, czy mogę skonstruować poziom za pomocą edytora SKS Xcode. Kiedy dodałem kilka ikonek z teksturą "Spaceship.png" i zbudowałem szablon aplikacji, tekstury nie ładują się.SpriteKit unarchiveFromFile nie ładuje tekstur z katalogów zasobów i atlasów
Oto zrzut ekranu szablonu gry Vanilla OSX wykorzystujący Swift jako język i dodanie ikonki "Spaceship.png". Tekstury pokazuje dobrze: A oto wynik budynku i uruchamiając aplikację tylko z tej modyfikacji szablonu:
debug konsola wyświetla ten komunikat ostrzegawczy: Próbowałem dodać .atlas folder i uzyskał taki sam wynik. scena po prostu wyświetla czerwoną ikonę X zamiast ikonki. Jeśli dodane sprite'y, w których po prostu kolorowe duszki, wyświetlają się dobrze. Miałem kiedyś aplikację, którą złomowałem, gdzie ładowałem SKScene i ręcznie dodawałem zasoby sprite'a do mojej podkategorii SKScene, i wszystko działało dobrze.
Jeśli jednak przeniosłem tekstury - "Spaceship.png" jako przykład - do katalogu głównego projektu, tj. Nie wewnątrz katalogu zasobów lub folderu .atlas, scena ładuje się z teksturami wyświetlającymi się w porządku.
Oto tekstury dodaje do głównego projektu:
A to pożądany rezultat: Próbowałem ręcznie dodać obciążonych aktywów z pliku SKS na scenę poprzez enumerateChildNodesWithName(_,usingBlock)
i otrzymam taki sam wynik, jeśli tekstury nie znajdowały się w katalogu głównym folderu projektu.
to ja próbuje dodać aktywa ręcznie:
func applicationDidFinishLaunching(aNotification: NSNotification) {
/* Pick a size for the scene */
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
let sceneToBePresented = GameScene()
/* Set the scale mode to scale to fit the window */
sceneToBePresented.scaleMode = .AspectFill
sceneToBePresented.size = scene.size
/* Sprite Kit applies additional optimizations to improve rendering performance */
self.skView!.ignoresSiblingOrder = true
self.skView!.showsFPS = true
self.skView!.showsNodeCount = true
scene.enumerateChildNodesWithName("*") { node, stop in
sceneToBePresented.addChild(node.copy() as SKSpriteNode)
}
self.skView!.presentScene(sceneToBePresented)
}
}
Rozejrzałem klas SpriteKit - SKNode
, SKScene
, SKTexture
, SKSPriteNode
- dla pojęcia o ścieżkach, buforowanie, obciążenia wstępnego, czy cokolwiek, ale nie był w stanie znaleźć coś, co może sprawić, że to zadziała.
Używam Xcode 6.1.1, a moim celem jest 10.9, a językiem, którego używam jest Swift, chociaż to samo zachowanie jest prawdziwe przy użyciu ObjC. Czy to jest funkcja czy błąd? Ktoś jeszcze biegał/borykał się z podobną sytuacją?
Dzięki z góry za wszelką pomoc
[UPDATE]
wygląda to nie jest jeszcze zaimplementowana - ładowanie tekstur z katalogów aktywów - jako ten post na forach dev omawia ten sam problem i jego rozwiązanie to zmienić nazwy katalogów zasobów tak, aby miały taką samą nazwę jak tekstury. W istocie, dowiedziałem się o plikach obrazów w folderze głównym: How do you load sprite textures from Images.xcassets when using SKS scene file, chociaż moja wcześniejsza aplikacja, którą udało mi się przywrócić do stanu roboczego, ładuje tekstury z .atlas'es, ale nie mogę zrób to z czystym szablonem !!!
Próbowałeś robić czyste następnie zbudować? Mam wiele problemów z edytorem scen. Naprawdę chciałem go użyć do rozwoju mojej gry, ale było to zbyt skomplikowane i niekompletne w działaniu. –
Zrobiłem. Zacząłem nawet nowy czysty szablon od zera, jak pokazano powyżej. jedyną modyfikacją, którą zrobiłem, było dodanie sprite teksturowanego do pliku 'GameScene.sks'. Ciekawe jest jednak, że wersja tego samego szablonu na iOS działa dobrze, bez ostrzeżeń "SKTexture". Tak, zaczynam myśleć, że to może być problem docelowy OSX. Mimo, że działa dobrze na tak niskim jak iOS 7.0. Plus działało wcześniej w aplikacji, którą spartaczyłem, ponieważ ładowałem zasoby sprite z pliku SKS i dodawałem je ręcznie do mojej sceny bez problemów. –