Di mana saya menyimpan string? Apa cara yang efisien untuk memuatnya?

8

Saya membuat RPG top-down untuk iPhone. Saya menggunakan tilemaps (CCTMXTileMap) dan mesin cocos2d-iphone.

Saya telah membuat kelas yang dapat menangani memuat peta dan NPC ke layar, kelas yang menangani input, dan, kelas yang seharusnya menampilkan dialog. Kelas dialog mengambil string tunggal, atau array, dan menampilkannya di layar di dalam kotak dialog yang rapi, menyembunyikan kontrol sampai pengguna mengetuk layar, ketika siklus ke pesan berikutnya, atau jika itu pesan terakhir / satu-satunya, menyembunyikan dialog.

NPC saya saat ini disimpan dalam Data Inti. String mereka perlu diperbarui berdasarkan kemajuan pencarian. Juga, ada bit dialog lainnya, seperti rambu-rambu dan pesan lainnya.

Jadi, di mana saya meletakkan konten tekstual game saya? Saya tidak berpikir Core Data adalah tempat yang tepat, karena tiga alasan:

  1. Jika string saya disimpan dalam Data Inti, saya mungkin akan lebih sulit menerjemahkannya.

  2. Jika string saya ada di Data Inti, itu hanya memberi saya string untuk NPC (yang akan dilampirkan ke NPC di Data Inti). Di mana itu meninggalkan segalanya?

  3. Jika saya meninggalkan string saya di Core Data, itu agak berat pada operasi pemuatan, bukan?

Dengan semua informasi latar belakang ini, di mana saya meletakkan string dan dialog saya di game saya?


tl; dr

Apa cara yang efisien untuk menyimpan string untuk game iOS sehingga dapat dengan mudah diakses, diterjemahkan, dan dirujuk di berbagai bagian game?

Moshe
sumber
Saya menghapus suntingan Anda karena itu pada dasarnya adalah pertanyaan yang terpisah, dan harus menjadi pertanyaan yang terpisah.
Tetrad

Jawaban:

7

Kecuali jika Anda memiliki beberapa persyaratan khusus untuk portabilitas, format, atau kecepatan, sumber daya string standar Apple akan baik-baik saja.


sumber
+1. NSLocalizedStringberfungsi dengan baik. Kecuali jika Anda ingin menyimpan seluruh pohon dialog, maka Anda mungkin memerlukan format yang mendukung struktur semacam ini.
bummzack
Dan bagaimana cara "melampirkan" mereka ke karakter saya? Apakah ada cara untuk mereferensikannya dengan angka, yaitu string #8, atau strings(8), atau [strings objectAtIndex:8];?
Moshe
Senar memiliki kunci. Anda harus membaca tautannya.
Inilah yang saya cari.
Moshe
0

Saya akan membuat file eksternal atau file untuk semua string. lalu muat sekali ketika program dimulai ke beberapa objek global. dalam run time setiap objek yang perlu menampilkan beberapa string harus meminta objek global tersebut untuk string yang tepat. Anda bisa menggunakan kunci untuk setiap string atau Anda bisa menggunakan array. jika Anda tidak menyukai ide objek global, Anda dapat memuat setiap string kapan pun Anda butuhkan langsung dari file, tetapi itu dapat menyebabkan fps rendah saat memuat dialog. menggunakan pendekatan ini Anda dapat dengan mudah mengubah bahasa kapan pun Anda mau, hanya saja Anda harus mulai membaca dari file yang berbeda.

Ali1S232
sumber