Как правильно разграничить данные от представления в UNITY? К примеру есть Кнопка на меню с текстом. Вопрос как локализировать текст на ней.
Мое решение, создать компонент и повесить его на Text с подключением ресурса(где будет логика в зависимости от языка что вернуть) из Resources.GetSttring("BtnName",);
А теперь такая ситуация, при создании проекта, допустим меню, работает с тонной текста, и в самом редакторе как правило пишем текст, иначе запутаешься. То есть получается у меня текст 2 раза будет присваиваться? Сначала значение из редактора, а потом еще и его перезапись в локализации.
И есть ли способ выполнять скрипты в самом редакторе до нажатия кнопки запустить, то есть подключил компонент к объекту, и он сразу же выполнился, добавил текст. Может через аттрибуты?

12 Фев 2021 в 19:48
128 +1
0
Ответы
1

Для правильного разграничения данных от представления в Unity, вам следует выделить логику локализации текста из компонента, отвечающего за отображение текста на кнопке. Один из способов сделать это - создать отдельный компонент, который будет отвечать только за локализацию текста.

Вы можете создать скрипт, в котором будет метод для получения локализованного текста, например:

using UnityEngine;
public class LocalizationManager : MonoBehaviour
{
public string GetLocalizedText(string key)
{
return Resources.GetString(key);
}
}

Затем в компоненте вашей кнопки, вы можете использовать этот скрипт для получения локализованного текста:

using UnityEngine;
using UnityEngine.UI;
public class ButtonLocalization : MonoBehaviour
{
public string key;
void Start()
{
LocalizationManager localizationManager = FindObjectOfType<LocalizationManager>();
Text buttonText = GetComponent<Text>();
if (localizationManager != null && buttonText != null)
{
buttonText.text = localizationManager.GetLocalizedText(key);
}
}
}

Теперь, при создании текста для кнопки в редакторе, вы можете использовать ключи вместо конкретного текста. А логика локализации будет выполнена автоматически при запуске сцены.

Что касается выполнения скриптов в редакторе Unity до нажатия кнопки запуска, к сожалению, такой возможности стандартными средствами Unity не предусмотрено. Однако, вы можете использовать пользовательские атрибуты и расширения редактора для выполнения определенных действий, например, автоматической локализации текста при добавлении компонента на объект. Но это потребует некоторой доработки и изучения API Unity для работы с редактором.

17 Апр в 20:58
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир