Как стать автором
Обновить

Комментарии 2

Мне кажется, что теги из строк — это очень неудобно, т.к. при локализации приложения теги могут меняться и потом перебирать все элементы UI, которые подвязаны к той или иной строке — бесконечная боль. Также, чем длиннее тег, тем больше данных приходится сериализовывать. Например, у нас есть тег UNIT_PANEL_AWESOME_LABEL_STATE_ENABLED. Тег состоит из 39 символов, следовательно в памяти он развёрнётся либо на 39 байт, либо на 78 байт.
Я считаю, что вместо тегов нужно использовать те же ScriptableObject, т.к. мы будем привязываться не к имени тега, а к ссылке на ScriptableObject, которая емнип будет занимать 8-16 байт.

Также, если я всё правильно понял, то все строки локализации сложены в один файл. Из чего вытекает проблема с тем, что когда у приложения/игры будет огромное количество данных (например, как в Final Fantasy), то они все будут висеть в памяти. Лично я не думаю, что 400 Мб данных локализации держать в памяти — очень удобно. Я бы разбил бы локализацию на группы, которые из себя представляют опять таки ScriptableObject, которые хранят ссылки на ScriptableObject тегов локализации. Из-за такого трюка, мы бы сняли головную боль с тем, что все локализации постоянно будут висеть в памяти, а также логика загрузки тех или иных групп управлялась бы самой Unity.

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

(спорю, что сейчас заминусуют и начнут пояснять, что я не прав и что при абузе ScriptableObject памяти будет занято овердофига)
Мысли здравые, в целом, особенно про строки, там надо на уровне редактора просто сделать привязку к индексам. Просто для текущих моих проектов нет смысла, поскольку боли такой нет.
Что касается строк и тэгов, ну можно загнаться и текст написать через 1000 символов) вопрос зачем).
А насчет памяти ассет чем хорош, его не надо хранить сразу в виде ссылку внутри сцены — хотя и можно. Сейчас например все языки сделаны загружаемыми, после загрузки и установки языка делаешь Unload бандлу с галкой true и память кушаться не будет (я надеюсь).
А в целом идеи хорошие можно рассмотреть.
PS: 400 мб данных локализации тут все на бандлах надо делать, в моем сегменте такого нет слава богу) даже с текстурами звуками и т.п.).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации