Size: a a a

2020 June 19

AP

Alexander P in unity3d.ru
FinniVꑭ Deadman
Ну смотри, допустим на какой то кнопке у нас текст купить.
Для этого текста будет ключ #buy-button-txt по нему мы вытянули список всех локализаций для этой кнопки, по текущему языку приложения - стянули нужную нам строку
Можно же одну локализацию, зачем все сразу
источник

DN

Dmitry Novikov in unity3d.ru
FinniVꑭ Deadman
Имхо
Самый простой вариант
Не, словарь выбрать один раз при установке языка проще
источник

АП

Артем Петров... in unity3d.ru
Alexander P
Я бы остановился на строковом ключе
Строковый ключ. Теперь получается мне нужно каждому слову присвоить ключ. Пусть ключ будет дефолтное значение компонента текста.

Присвоил, теперь нужно все поместить в дикшенери. Нужно перебирать все текст компоненты на сцене ? Или как не шарю
источник

FD

FinniVꑭ Deadman in unity3d.ru
Dmitry Novikov
Не, словарь выбрать один раз при установке языка проще
Ну окей, один раз его вытянуть и сказать что тут лежит текущая локаль, сонласен
источник

АП

Артем Петров... in unity3d.ru
Или хранить в json значение ключей ещё
источник

DN

Dmitry Novikov in unity3d.ru
Артем Петров
Я так и делаю . Тут вопрос именно с поиском
вешаешь компонент на text в нем в инспекторе прописан   key=#strtbttn который вызывает text.text = localization.getkey(key) который возвращает currentdictionary [key]
источник

AP

Alexander P in unity3d.ru
Артем Петров
Строковый ключ. Теперь получается мне нужно каждому слову присвоить ключ. Пусть ключ будет дефолтное значение компонента текста.

Присвоил, теперь нужно все поместить в дикшенери. Нужно перебирать все текст компоненты на сцене ? Или как не шарю
Неееет.
У твоего текста будет компонент, который хранит ключ. Реализуй шаблон Наблюдатель, где наблюдателями будут твои строки в гуях, а наблюдаемым -- компонент-сервер, который хранит название текущей локализации и объект со всеми строками. Когда текст создаётся в сцене, пусть он подписывается на обновления сервера. В момент Awake или Start он будет подтягивать строку из текущей локализации. Когда ты захочешь поменять ее, ты просто меняешь объект-массив в сервере и вызываешь какой-нибудь апдейт метод, который автоматом заапдейтит все подписанные на него компоненты-тексты.
источник

AP

Alexander P in unity3d.ru
Объектом-массивом можно оставить JObject или JArray, если ты пользуешься JSON.NET
источник

AP

Alexander P in unity3d.ru
В случае со строками в ключах у словаря вряд ли будет О(1)
источник

DN

Dmitry Novikov in unity3d.ru
Alexander P
В случае со строками в ключах у словаря вряд ли будет О(1)
Раз был вариант использовать свитч вряд-ли там много текста
источник

АП

Артем Петров... in unity3d.ru
Alexander P
Неееет.
У твоего текста будет компонент, который хранит ключ. Реализуй шаблон Наблюдатель, где наблюдателями будут твои строки в гуях, а наблюдаемым -- компонент-сервер, который хранит название текущей локализации и объект со всеми строками. Когда текст создаётся в сцене, пусть он подписывается на обновления сервера. В момент Awake или Start он будет подтягивать строку из текущей локализации. Когда ты захочешь поменять ее, ты просто меняешь объект-массив в сервере и вызываешь какой-нибудь апдейт метод, который автоматом заапдейтит все подписанные на него компоненты-тексты.
Ок. Спасибо изучу по поводу наблюдателя и попробую . Ни разу этот патерн не юзал
источник

АП

Артем Петров... in unity3d.ru
Спасибо всем )
источник

АП

Артем Петров... in unity3d.ru
Dmitry Novikov
Раз был вариант использовать свитч вряд-ли там много текста
Ну слов 300мб
источник

DN

Dmitry Novikov in unity3d.ru
Надеюсь не мегабайт
источник

АП

Артем Петров... in unity3d.ru
Ахахах. Не ) 300 штук
источник

AP

Alexander P in unity3d.ru
300 мб слов?
источник

AP

Alexander P in unity3d.ru
Ну, 300 штук это как два пальца сами знаете, что сделать
источник

АП

Артем Петров... in unity3d.ru
Свитч ?
источник

AP

Alexander P in unity3d.ru
Поэтому строковый ключ самое то
источник

AP

Alexander P in unity3d.ru
Артем Петров
Свитч ?
Забудь
источник