¿Dónde guardo las cuerdas? ¿Cuál es una forma eficiente de cargarlos?


8

Estoy haciendo un juego de rol de arriba hacia abajo para iPhone. Estoy usando tilemaps (CCTMXTileMap) y el motor cocos2d-iphone.

Hice una clase que puede manejar la carga de mapas y NPC en la pantalla, una clase que maneja la entrada y una clase que se supone que muestra un cuadro de diálogo. La clase de diálogo toma una sola cadena, o una matriz, y la muestra en pantalla dentro de un cuadro de diálogo ordenado, ocultando los controles hasta que el usuario toca en la pantalla, cuando pasa al siguiente mensaje, o si es el último / único mensaje, Oculta el diálogo.

Mis NPC están actualmente almacenados en Core Data. Sus cadenas deberán actualizarse en función del progreso de la búsqueda. Además, hay otros fragmentos de diálogo, como señales y otros mensajes.

Entonces, ¿dónde pongo el contenido textual de mi juego? No creo que Core Data sea el lugar correcto, por tres razones:

  1. Si mis cadenas se almacenan en Core Data, probablemente me resulte más difícil traducirlas.

  2. Si mis cadenas están en Core Data, eso solo me deja con cadenas para NPC (que se adjuntarían a los NPC en Core Data). ¿Dónde deja eso todo lo demás?

  3. Si dejo mis cadenas en Core Data, es un poco pesado en las operaciones de carga, ¿no?

Dada toda esta información de fondo, ¿dónde pongo mis cadenas y diálogo en mi juego?


tl; dr

¿Cuál es una manera eficiente de almacenar cadenas para un juego de iOS para que se pueda acceder a ellas, traducirlas y consultarlas fácilmente en varias partes del juego?


Eliminé tu edición porque esa es fundamentalmente una pregunta separada, y debería ser una pregunta separada.
Tetrad

Respuestas:


7

A menos que tenga algunos requisitos particulares de portabilidad, formato o velocidad, los recursos de cadena estándar de Apple deberían estar bien.


+1. NSLocalizedStringfunciona bien A menos que desee almacenar árboles de diálogo completos, es posible que necesite un formato que admita este tipo de estructura.
bummzack

¿Y cómo los "adjunto" a mis personajes? ¿Hay alguna manera de hacer referencia a ellos por número, es decir string #8, o strings(8), o [strings objectAtIndex:8];?
Moshe

Las cuerdas tienen llaves. Deberías leer el enlace.

Esto es exactamente lo que estaba buscando.
Moshe

0

Crearía un archivo externo o archivos para todas las cadenas. luego cárguelo una vez cuando el programa comience en algún objeto global. en tiempo de ejecución, cada objeto que necesite mostrar alguna cadena tendrá que pedirle a ese objeto global la cadena adecuada. puede usar claves para cada cadena o puede usar una matriz. Si no le gusta la idea del objeto global, puede cargar cada cadena siempre que lo necesite directamente desde el archivo, pero eso puede causar bajos fps al cargar diálogos. Con este enfoque, puede cambiar fácilmente el idioma cuando lo desee, solo debe comenzar a leer desde un archivo diferente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.