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

12 Фев 2021 в 19:48
152 +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 Апр 2024 в 20:58
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир