Wo speichere ich Strings? Wie können sie effizient geladen werden?

8

Ich mache ein Top-Down-Rollenspiel für das iPhone. Ich verwende Tilemaps (CCTMXTileMap) und die cocos2d-iphone Engine.

Ich habe eine Klasse erstellt, die das Laden von Karten und NPCs auf den Bildschirm übernimmt, eine Klasse, die Eingaben verarbeitet, und eine Klasse, die Dialoge anzeigen soll. Die Dialogklasse verwendet eine einzelne Zeichenfolge oder ein Array und zeigt sie auf dem Bildschirm in einem übersichtlichen Dialogfeld an. Dabei werden die Steuerelemente ausgeblendet, bis der Benutzer auf den Bildschirm tippt, wenn er zur nächsten Nachricht wechselt oder wenn es sich um die letzte / einzige Nachricht handelt. versteckt den Dialog.

Meine NPCs sind derzeit in Core Data gespeichert. Ihre Zeichenfolgen müssen basierend auf dem Questfortschritt aktualisiert werden. Es gibt auch andere Dialogelemente wie Wegweiser und andere Nachrichten.

Wo platziere ich den Textinhalt meines Spiels? Ich denke aus drei Gründen nicht, dass Core Data der richtige Ort ist:

  1. Wenn meine Zeichenfolgen in Core Data gespeichert sind, fällt es mir wahrscheinlich schwerer, sie zu übersetzen.

  2. Wenn sich meine Zeichenfolgen in Core Data befinden, bleiben mir nur Zeichenfolgen für NPCs (die an die NPCs in Core Data angehängt würden). Wo bleibt sonst alles?

  3. Wenn ich meine Zeichenfolgen in Core Data belasse, sind die Ladevorgänge etwas schwer, oder?

Wo füge ich angesichts all dieser Hintergrundinformationen meine Zeichenfolgen und Dialoge in mein Spiel ein?


tl; dr

Was ist eine effiziente Möglichkeit, Zeichenfolgen für ein iOS-Spiel zu speichern, damit auf sie in verschiedenen Teilen des Spiels leicht zugegriffen, übersetzt und referenziert werden kann?

Moshe
quelle
Ich habe Ihre Bearbeitung entfernt, da dies im Grunde eine separate Frage ist und eine separate Frage sein sollte.
Tetrad

Antworten:

7

Sofern Sie keine besonderen Anforderungen an Portabilität, Formatierung oder Geschwindigkeit haben, sollten die Standard-String-Ressourcen von Apple in Ordnung sein.


quelle
+1. NSLocalizedStringfunktioniert gut. Wenn Sie nicht ganze Dialogbäume speichern möchten, benötigen Sie möglicherweise ein Format, das diese Art von Struktur unterstützt.
Bummzack
Und wie "hänge" ich sie meinen Charakteren an? Gibt es eine Möglichkeit, sie nach Nummer zu referenzieren, dh string #8oder strings(8), oder [strings objectAtIndex:8];?
Moshe
Die Saiten haben Schlüssel. Sie sollten den Link lesen.
Genau das habe ich gesucht.
Moshe
0

Ich würde eine externe Datei oder Dateien für alle Zeichenfolgen erstellen. Laden Sie es dann einmal, wenn das Programm in ein globales Objekt startet. Zur Laufzeit muss jedes Objekt, das eine Zeichenfolge anzeigen muss, dieses globale Objekt nach der richtigen Zeichenfolge fragen. Sie können Schlüssel für jede Zeichenfolge oder ein Array verwenden. Wenn Ihnen die globale Objektidee nicht gefällt, können Sie jede Zeichenfolge jederzeit direkt aus der Datei laden. Dies kann jedoch beim Laden von Dialogen zu niedrigen fps führen. Mit diesem Ansatz können Sie die Sprache jederzeit leicht ändern. Sie müssen lediglich mit dem Lesen aus einer anderen Datei beginnen.

Ali1S232
quelle