Оптимизированная локализация игры на Unity
Здравствуйте! Разрабатываем игрушку на Unity (пошаговая стратегия), используем как статические объекты (которые всегда находятся на сцене), так и создание объектов из префабов. Встал вопрос локализации.
На данный момент система работает следующий образом:
1) Все текстовые значения хранятся в 4 .csv файлах под разные сцены, значения записаны построчно
2) Все статические объекты занесены в массив скрипта, контроллер со скриптом есть на каждой сцене
3) При загрузке сцены всем статическим объектам через цикл присваиваются соответствующие значения из текстового файла. Через ReadAllLines в вспомогательный массив заносятся все значения из текстового файла, которые нам нужны и присваиваются значениям текстов.
4) Для текстов, создаваемых кодом, мы используем отдельный метод, который принимает один аргумент в виде числа и через цикл прокручивает текстовый файл до определённой строки, возвращая (return) значение этой самой строки. Во всех скриптах мы просто обращаемся к этому методу и вставляем его с нужным аргументом (номером строки, на которой находится нужное нам значение).
Возникла следующая проблема: При добавлении в игру новых юнитов, зданий, способностей и т д, нам придётся записывать их в конце текстового файла, что рушит всю структуру и в дальнейшем найти нужный параметр будет непросто.
Предлагайте свои варианты переделки локализации/ структуры хранения текстов, главное - оптимизированные варианты.
Unity
218 постов2.6K подписчиков
Правила сообщества
• Запрещается постить вопросы, мемы и прочую ерунду - для этого есть форумы и другие специализированные ресурсы.
• Распространение и обсуждение пиратского ПО, кейгенов, ключей и прочих пиратских файлов запрещено.
• Соблюдайте сетевой этикет. Оскорбительное поведение и мат (в том числе сокращенный или завуалированный) караются баном.
• Запрещается разводить полемики на тему "какой движок круче". Здесь мы обсуждаем только Unity.
• Запрещается использовать контент с оскорбительным содержанием, а так же любой другой, который может задеть или оскорбить чувства участников.