Где я могу хранить строки? Какой эффективный способ их загрузки?


8

Я делаю нисходящую RPG для iPhone. Я использую мозаичные карты (CCTMXTileMap) и движок cocos2d-iphone.

Я создал класс, который может обрабатывать загрузку карт и NPC на экран, класс, который обрабатывает ввод, и класс, который должен отображать диалог. Класс диалога берет одну строку или массив и отображает ее на экране внутри аккуратного диалогового окна, скрывая элементы управления до тех пор, пока пользователь не коснется экрана, не перейдет к следующему сообщению или не станет последним / единственным сообщением, скрывает диалог

Мои NPC в настоящее время хранятся в Core Data. Их строки должны будут обновляться в зависимости от прогресса квеста. Кроме того, есть другие биты диалога, такие как указатели и другие сообщения.

Итак, куда мне поместить текстовое содержание моей игры? Я не думаю, что Core Data - правильное место по трем причинам:

  1. Если мои строки хранятся в Core Data, мне, вероятно, будет сложнее их перевести.

  2. Если мои строки находятся в Базовых данных, у меня останутся только строки для NPC (которые будут присоединены к NPC в Базовых данных). Где это оставить все остальное?

  3. Если я оставлю свои строки в Core Data, это немного усложнит операции загрузки, не так ли?

Учитывая всю эту справочную информацию, где я могу разместить свои строки и диалоги в моей игре?


ТЛ; др

Какой эффективный способ хранить строки для игры для iOS, чтобы к ним можно было легко обращаться, переводить и ссылаться на них в разных частях игры?


Я удалил вашу правку, потому что это принципиально отдельный вопрос, и должен быть отдельным вопросом.
Тетрад

Ответы:


7

Если у вас нет особых требований к переносимости, форматированию или скорости, стандартные строковые ресурсы Apple должны быть в порядке.


+1. NSLocalizedStringработает просто отлично. Если вы не хотите хранить целые диалоговые деревья, тогда вам может понадобиться формат, поддерживающий такую ​​структуру.
bummzack

И как мне «прикрепить» их к моим персонажам? Есть ли способ ссылаться на них по номеру, т. Е. string #8Или strings(8), или [strings objectAtIndex:8];?
Моше

Струны имеют ключи. Вы должны прочитать ссылку.

Это именно то, что я искал.
Моше

0

Я хотел бы создать внешний файл или файлы для всех строк. затем загрузить его один раз, когда программа начинается в некотором глобальном объекте. во время выполнения каждый объект, который должен отображать некоторую строку, должен будет запросить этот глобальный объект для правильной строки. Вы можете использовать ключи для каждой строки или вы можете использовать массив. если вам не нравится идея глобального объекта, вы можете загружать каждую строку всякий раз, когда вам это нужно, прямо из файла, но это может привести к низкой частоте кадров при загрузке диалогов. Используя этот подход, вы можете легко изменить язык в любое время, просто начните чтение из другого файла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.