2015-11-28 12 views
5

Ho iniziato a utilizzare il nuovo Atlante Sprite nella cartella XCAssets invece di avere i miei atlanti nella cartella del progetto. Tuttavia, ho notato che quando facevo questo i miei nodi non venivano più renderizzati in batch, il che comportava un numero elevato di chiamate in pareggio inefficienti. Ciò sconfigge completamente lo scopo dell'uso di un atlante!Major Bug, Sprite Atlas creato nella cartella XCAssets non supporta il rendering in batch

Per essere chiari questo è il codice che ho usato per ottenere l'atlante.

let atlas = SKTextureAtlas(named: "Sprites") 

"Sprites" è una Sprite Atlas creato nella cartella XCAssets.

Qualcuno ha una soluzione alternativa o sono bloccato a creare Sprite Kit Atlanti nella cartella del progetto.

Sto usando Xcode 7.2 beta.

Il motivo per cui desidero utilizzare il nuovo Sprite Kit Atlases è a causa del problema this.

+0

Questo bug si riferisce solo a Xcode 7.2 beta e El Captain? Ho capito che funziona su Yosemite, Xcode 7.1.1 e iOS 9.1. – Whirlwind

+0

@Whirlwind Stavo usando la versione beta, ma ricordo che il problema si è verificato anche in una versione precedente, non so quale. A cosa è stato impostato il target di implementazione durante il test? –

+0

Il mio obiettivo di implementazione era impostato su 9.1 in questo caso particolare. – Whirlwind

risposta

4

Ho trovato una soluzione mentre stavo scrivendo la domanda. È possibile creare uno SKTextureAtlas di programmazione da immagini all'interno della cartella XCAssets in questo modo:

let atlas = SKTextureAtlas(dictionary: ["Head":UIImage(named: "Head")!, "Body":UIImage(named: "Body")!]) 

Questo è ovviamente solo una soluzione alternativa. Spero che Apple lo risolva nelle versioni successive di Sprite Kit. Questo è un bug di prestazioni piuttosto serio di cui tutti gli sviluppatori dovrebbero essere consapevoli. Anche il progetto di esempio di Apple utilizza i nuovi Sprite Atlases, quindi pensi che avrebbero il rendering in batch funzionante.

Update 1 di risposta da parte di Apple:

Grazie per averci informato di questo problema. Attualmente siamo a indagare sulla causa e incorporeremo una correzione nei futuri aggiornamenti di iOS . Nel frattempo, sono disponibili due soluzioni alternative: 1. Creare e utilizzare l'atlante delle texture in una cartella .atlas. 2. Continuare a utilizzare l'atlante delle texture nel catalogo delle risorse, ma con l'obiettivo di distribuzione impostato su iOS 8.0.

Update 2 Apple ha detto che potrebbe essere stato fissato in iOS 10. Andando ad indagare.

+0

sai se questo problema è stato risolto in iOS 10? – claassenApps

+0

@claassenApps Non sono sicuro, non ho avuto il piacere di lavorare con Sprite Kit per un po '. Sta per ricominciare dopo che il semestre è terminato. Aggiornerò tutti i miei messaggi di bug di Sprite Kit per iOS 10 quando lo farò. Se hai la possibilità di provare questo, sentiti libero di pubblicare i risultati qui. –

0

Questo sembra essere risolto in iOS 10. L'unica cosa fastidiosa è che non è possibile avere due immagini con lo stesso nome anche se si trovano in atlanti separati.

Modifica: questo è stato corretto solo in iOS 10. Se si utilizza iOS 9, si verifica un'enorme perdita di memoria che causerà il crash dell'applicazione.

+0

Non vedo risolto in questo momento, test per Mac – CalixJumi

Problemi correlati