Où puis-je stocker des chaînes? Quelle est une manière efficace de les charger?

8

Je fais un RPG descendant pour iPhone. J'utilise tilemaps (CCTMXTileMap) et le moteur cocos2d-iphone.

J'ai créé une classe qui peut gérer le chargement des cartes et des PNJ sur l'écran, une classe qui gère les entrées et une classe qui est censée afficher la boîte de dialogue. La classe de dialogue prend une seule chaîne ou un tableau et l'affiche à l'écran dans une boîte de dialogue soignée, masquant les contrôles jusqu'à ce que l'utilisateur tape sur l'écran, lorsqu'il passe au message suivant ou s'il s'agit du dernier / seul message, masque la boîte de dialogue.

Mes PNJ sont actuellement stockés dans Core Data. Leurs chaînes devront être mises à jour en fonction de l'avancement de la quête. En outre, il existe d'autres bits de dialogue, comme des panneaux de signalisation et d'autres messages.

Alors, où dois-je mettre le contenu textuel de mon jeu? Je ne pense pas que Core Data soit le bon endroit, pour trois raisons:

  1. Si mes chaînes sont stockées dans Core Data, j'aurai probablement plus de mal à les traduire.

  2. Si mes chaînes sont dans Core Data, cela ne me laisse que des chaînes pour les NPC (qui seraient attachées aux NPC dans Core Data). Où cela laisse-t-il tout le reste?

  3. Si je laisse mes chaînes dans Core Data, c'est un peu lourd sur les opérations de chargement, non?

Compte tenu de toutes ces informations générales, où dois-je placer mes chaînes et ma boîte de dialogue dans mon jeu?


tl; dr

Quel est un moyen efficace de stocker des chaînes pour un jeu iOS afin qu'elles soient facilement accessibles, traduites et référencées dans différentes parties du jeu?

Moshe
la source
J'ai supprimé votre modification, car il s'agit fondamentalement d'une question distincte et devrait être une question distincte.
Tetrad

Réponses:

7

Sauf si vous avez des exigences particulières en matière de portabilité, de formatage ou de vitesse, les ressources de chaîne standard d'Apple devraient convenir.


la source
+1. NSLocalizedStringfonctionne très bien. À moins que vous ne souhaitiez stocker des arborescences de dialogue entières, vous aurez peut-être besoin d'un format prenant en charge ce type de structure.
bummzack
Et comment les «attacher» à mes personnages? Existe-t-il un moyen de les référencer par numéro, c'est string #8-à- dire , ou strings(8), ou [strings objectAtIndex:8];?
Moshe
Les chaînes ont des clés. Vous devriez lire le lien.
Ceci est exactement ce que je cherchais.
Moshe
0

Je créerais un ou plusieurs fichiers externes pour toutes les chaînes. puis chargez-le une fois lorsque le programme commence dans un objet global. au moment de l'exécution, chaque objet qui doit afficher une chaîne devra demander à cet objet global la chaîne appropriée. vous pouvez utiliser des clés pour chaque chaîne ou vous pouvez utiliser un tableau. si vous n'aimez pas l'idée d'objet global, vous pouvez charger chaque chaîne chaque fois que vous en avez besoin directement à partir du fichier, mais cela peut entraîner de faibles fps lors du chargement des dialogues. en utilisant cette approche, vous pouvez facilement changer la langue quand vous le souhaitez, il vous suffit de commencer à lire à partir d'un fichier différent.

Ali1S232
la source