Sono ancora nuovo con SpriteKit e volevo vedere se posso costruire un livello utilizzando l'editor SKS di Xcode. Quando ho aggiunto un paio di sprite con la texture "Spaceship.png" e ho creato l'app modello, le trame non vengono caricate.SpriteKit unarchiveFromFile non carica textures da cataloghi e atlanti di risorse
Ecco uno screenshot del modello di gioco OSX vanilla utilizzando Swift come lingua e aggiungendo uno sprite "Spaceship.png" in dotazione. La texture mostra bene: Ed ecco il risultato della costruzione e la gestione l'applicazione solo con modifiche al modello:
console di debug visualizza questo messaggio di avviso: Ho provato ad aggiungere un .atlas cartella e ottenuto lo stesso risultato. la scena mostra solo l'icona X rossa al posto dello sprite. Se gli sprite aggiunti sono solo sprites a colori, vengono visualizzati correttamente. Ho avuto un'app qualche tempo fa che ho scartato, dove caricavo SKScene e avrei aggiunto manualmente gli asset sprite all'interno della mia sottoclasse SKScene, e ha funzionato bene.
Se, tuttavia, ho spostato le trame - "Spaceship.png" come esempio - alla radice del progetto, cioè non all'interno di un catalogo di risorse o di una cartella .atlas, la scena viene caricata con le trame che vengono visualizzate correttamente.
Ecco la trama aggiunto alla base del progetto:
E questo è il risultato desiderato: Ho provato ad aggiungere manualmente gli asset caricati dal file SKS alla scena via enumerateChildNodesWithName(_,usingBlock)
e ottengo lo stesso risultato se le trame non erano nella radice della cartella del progetto.
Si tratta di me cercando di aggiungere le attività manualmente:
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)
}
}
mi sono guardato intorno classi SpriteKit - SKNode
, SKScene
, SKTexture
, SKSPriteNode
- per qualsiasi indizio sui percorsi, caching, precarico, o qualsiasi cosa, ma non era in grado per trovare una cosa che potrebbe far funzionare questo
Sto eseguendo Xcode 6.1.1 e il mio obiettivo è 10.9, e la lingua che sto usando è Swift, sebbene lo stesso comportamento sia vero usando ObjC. È una caratteristica o un bug? Qualcun altro in esecuzione/corse in una situazione simile?
Grazie in anticipo per qualsiasi aiuto
[UPDATE]
appare come questa non è ancora implementata - texture di carico dai cataloghi di attività - come questo post nei forum dev discute lo stesso problema e la sua soluzione è rinominare i cataloghi delle risorse con lo stesso nome della trama. In sostanza, quello che ho scoperto sull'avere i file immagine nella cartella radice: How do you load sprite textures from Images.xcassets when using SKS scene file, anche se la mia app precedente, che sono riuscito a ripristinare lo stato di funzionamento, carica le trame da .atlas, ma non riesco a sembrare fallo con un modello pulito !!!
hai provato a fare una pulizia poi costruire? Ho avuto un sacco di problemi con l'editor delle scene. Volevo davvero usarlo per lo sviluppo del mio gioco, ma era troppo buggato e incompleto sulle funzionalità. –
L'ho fatto. Ho persino iniziato un nuovo modello pulito da zero come mostrato sopra. l'unica modifica che ho fatto è stata quella di aggiungere uno sprite strutturato al file 'GameScene.sks'. Una cosa curiosa, però, è che una versione iOS dello stesso modello funzioni bene, senza gli avvertimenti di 'SKTexture'. Quindi, sto iniziando a pensare che potrebbe essere un problema di target OSX. Anche se, funziona bene a partire da iOS 7.0. Inoltre ha funzionato prima in un'app che ho creato un errore, poiché stavo caricando risorse sprite da un file SKS e aggiungendole manualmente alla mia scena senza problemi. –