文字列はどこに保存しますか?それらをロードする効率的な方法は何ですか?


8

iPhone用のトップダウンRPGを作っています。私はタイルマップ(CCTMXTileMap)とcocos2d-iphoneエンジンを使用しています。

画面へのマップとNPCのロードを処理できるクラス、入力を処理するクラス、およびダイアログを表示することになっているクラスを作成しました。ダイアログクラスは単一の文字列または配列を取り、それを画面上にきちんとしたダイアログボックス内に表示し、ユーザーが画面をタップするまで、次のメッセージに循環するとき、または最後の/唯一のメッセージである場合は、コントロールを非表示にします。ダイアログを非表示にします。

私のNPCは現在Core Dataに保存されています。それらの文字列は、クエストの進行状況に基づいて更新する必要があります。また、標識やその他のメッセージなど、ダイアログの他のビットもあります。

では、ゲームのテキストコンテンツはどこに配置すればよいですか?次の3つの理由から、Core Dataは適切な場所ではないと思います。

  1. 文字列がCore Dataに保存されている場合、おそらくそれらを翻訳するのは難しいでしょう。

  2. 文字列がCore Dataにある場合、NPC(Core DataのNPCに接続される)の文字列のみが残ります。それはどこにすべてを残しますか?

  3. 文字列をCore Dataに残しておくと、読み込み操作が少し重くなりますよね?

このすべての背景情報を踏まえて、ゲームのどこに文字列とダイアログを配置すればよいですか?


tl; dr

ゲームのさまざまな部分で簡単にアクセス、翻訳、参照できるように、iOSゲームの文字列を保存する効率的な方法は何ですか?


これは基本的に別の質問であり、別の質問でなければならないため、編集を削除しました。
Tetrad

回答:


7

移植性、フォーマット、または速度に関する特定の要件がない限り、Appleの標準の文字列リソースは問題ありません。


+1。NSLocalizedString正常に動作します。ダイアログツリー全体を保存したい場合を除いて、この種の構造をサポートするフォーマットが必要になる場合があります。
bummzack

そして、どうすればそれらをキャラクターに「アタッチ」できますか?それらを番号で参照する方法はありますか、つまりstring #8、またはstrings(8)、または[strings objectAtIndex:8];
Moshe

文字列にはキーがあります。リンクを読んでください。

これはまさに私が探していたものです。
モシェ

0

すべての文字列に対して外部ファイルを作成します。次に、プログラムが何らかのグローバルオブジェクトで開始されたときに一度ロードします。実行時に、文字列を表示する必要があるすべてのオブジェクトは、適切な文字列をそのグローバルオブジェクトに要求する必要があります。すべての文字列にキーを使用することも、配列を使用することもできます。グローバルオブジェクトのアイデアが気に入らない場合は、必要なときにいつでもすべての文字列をファイルから読み込むことができますが、ダイアログを読み込むときにfpsが低くなる可能性があります。このアプローチを使用すると、いつでも簡単に言語を変更できます。別のファイルから読み取りを開始するだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.