Dove conservo le stringhe? Qual è un modo efficiente per caricarli?


8

Sto realizzando un gioco di ruolo top-down per iPhone. Sto usando tilemaps (CCTMXTileMap) e il motore cocos2d-iphone.

Ho creato una classe in grado di gestire il caricamento di mappe e NPC sullo schermo, una classe che gestisce l'input e una classe che dovrebbe visualizzare una finestra di dialogo. La classe di dialogo accetta una singola stringa o un array e la visualizza sullo schermo all'interno di una finestra di dialogo ordinata, nascondendo i controlli fino a quando l'utente tocca lo schermo, quando passa al messaggio successivo o se è l'ultimo / unico messaggio, nasconde la finestra di dialogo.

I miei NPC sono attualmente archiviati in Core Data. Le loro stringhe dovranno essere aggiornate in base all'avanzamento della missione. Inoltre, ci sono altri bit di dialogo, come cartelli e altri messaggi.

Quindi, dove inserisco il contenuto testuale del mio gioco? Non credo che Core Data sia il posto giusto, per tre motivi:

  1. Se le mie stringhe sono archiviate in Core Data, probabilmente avrò più difficoltà a tradurle.

  2. Se le mie stringhe sono in Core Data, ciò mi lascia solo con stringhe per NPC (che verrebbero associate agli NPC in Core Data). Dove lascia tutto questo?

  3. Se lascio le mie stringhe in Core Data, è un po 'pesante per le operazioni di caricamento, no?

Date tutte queste informazioni di base, dove posso mettere le mie stringhe e dialoghi nel mio gioco?


tl; dr

Qual è un modo efficiente per memorizzare le stringhe per un gioco iOS in modo che possano essere facilmente accessibili, tradotte e referenziate in varie parti del gioco?


Ho rimosso la modifica perché questa è fondamentalmente una domanda separata e dovrebbe essere una domanda separata.
Tetrad

Risposte:


7

A meno che tu non abbia alcuni requisiti particolari per la portabilità, la formattazione o la velocità, le risorse di stringa standard di Apple dovrebbero andare bene.


+1. NSLocalizedStringfunziona benissimo. A meno che non si desideri memorizzare interi alberi di dialogo, potrebbe essere necessario un formato che supporti questo tipo di struttura.
bummzack,

E come posso "attaccarli" ai miei personaggi? C'è un modo per fare riferimento a loro in base al numero, ovvero string #8, o strings(8), o [strings objectAtIndex:8];?
Moshe,

Le stringhe hanno le chiavi. Dovresti leggere il link.

Questo e 'esattamente quello che stavo cercando.
Moshe,

0

Vorrei creare un file esterno o file per tutte le stringhe. quindi caricarlo una volta quando il programma inizia in qualche oggetto globale. in fase di esecuzione ogni oggetto che deve visualizzare una stringa dovrà richiedere a quell'oggetto globale la stringa corretta. puoi usare le chiavi per ogni stringa o puoi usare un array. se non ti piace l'idea dell'oggetto globale, puoi caricare ogni stringa ogni volta che ti serve direttamente dal file, ma ciò può causare fps bassi durante il caricamento dei dialoghi. usando questo approccio puoi facilmente cambiare la lingua quando vuoi, devi solo iniziare a leggere da un altro file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.