Unity хранение строк в одном файле

245
19 мая 2018, 11:10

Делаю средний проект. Замаячила на горизонте необходимость перевести его на другой язык. Программируя на Android. Знаю что очень удобно хранить все строковые переменные в одном файле. В Android это xml. Как это правильно организовать в Unity?

Answer 1

Я могу сказать, как мы с своих играх делаем.

  1. В отдельной системе (с веб мордой) вбиваем локальки на разные языки и т.п.
  2. Для каждого языка в этой системе генерится json. Обычный плоский список, который десериализуется в Dictionary<string, string> на клиенте.
  3. В Unity3d в редакторе перед билдом скрипт стучится к нашему серваку с этими json'ами и качает их в папку Resources. В итоге, все локальки попадают в билд. После закачки в папку с ресурсами импортируем

    UnityEditor.AssetDatabase.ImportAsset(path, UnityEditor.ImportAssetOptions.ForceUpdate);
    
  4. У нас для игр нужен интернет, поэтому у ещё при запуске игры происходит сверка версий локалек локальных с версиями на серваке. Если они обновились, то качаем новые.

  5. В самом unity локальки десериализуются в Dictionary<string, string>, где просто брать локальки по ключу. Читаем из ресурсов и десериализуем:

    var txt = Resources.Load(path) as TextAsset;
    var words = DeserializeObject<Dictionary<string, string>>(asset)
    
  6. Грузится локалька в зависимости от языка системы SystemLanguage (по-умолчанию EN).

READ ALSO
Установка службы Windows

Установка службы Windows

При попытке установить службу получаю следующую ошибку:

318
Нехватка места на диске System.Runtime.InteropServices

Нехватка места на диске System.Runtime.InteropServices

Стала появляться следующая ошибка после переустановки с win7 на win10 :

244
Binding вложенному свойству

Binding вложенному свойству

Приведу пример кода:

223