Skip to content

Latest commit

 

History

History
73 lines (59 loc) · 6.52 KB

README.md

File metadata and controls

73 lines (59 loc) · 6.52 KB

LocalizedTMPTextBinder

LocalizedTMPTextBinder — это компонент Unity, предназначенный для автоматизации процесса связывания LocalizeStringEvent с текстом TMP_Text (TextMeshPro). Скрипт устраняет необходимость ручной настройки в инспекторе, автоматически добавляя и управляя обработчиками событий, связанными с локализацией текстовых элементов.

Основная задача

При использовании Unity Localization в связке с TextMeshPro часто требуется вручную привязывать событие OnUpdateString к TMP_Text.text. Это может быть трудоёмким и подверженным ошибкам процессом, особенно в крупных проектах. Этот компонент решает проблему автоматической привязки, что экономит время и предотвращает ошибки.

Особенности

  • Автоматическая привязка LocalizeStringEvent к TMP_Text.text.
  • Удаление "висячих" подписок при удалении компонента.
  • Работа в режиме редактора и игры.
  • Гарантированное отсутствие дублирующихся подписок.
  • Простая интеграция с существующими проектами.

Установка

  1. Скопируйте скрипт LocalizedTMPTextBinder в папку Scripts вашего Unity проекта.
  2. Убедитесь, что у вас установлены следующие зависимости:
image image

Использование

  1. Добавьте компонент LocalizedTMPTextBinder на объект, содержащий TMP_Text, который вы хотите локализовать.
  2. Убедитесь, что на том же объекте уже присутствует компонент LocalizeStringEvent. Если его нет, Unity автоматически добавит его благодаря атрибуту [RequireComponent].
  3. В инспекторе задайте необходимые ссылки на таблицы и записи локализации в компоненте LocalizeStringEvent.

Пример :D

До использования

Вручную настройте LocalizeStringEvent:

  1. Добавьте компонент LocalizeStringEvent.
  2. Вручную свяжите событие OnUpdateString с TMP_Text.text.
  3. Убедитесь, что подписка корректно настроена.

После использования

Просто добавьте компонент LocalizedTMPTextBinder на объект, и всё произойдёт автоматически:

[AddComponentMenu("0x_/Localization/LocalizedTMPTextBinder")]

Результат

  • OnUpdateString автоматически настроено на обновление TMP_Text.text.
  • Подписка удаляется при удалении компонента.
image

Ограничения :3

  • Работает только с TMP_Text. Если вы используете другой тип текста, например UI.Text, потребуется модификация скрипта.
  • Динамическая привязка работает только для LocalizeStringEvent на том же объекте.

Проблемы, которые решает :3

  • Устранение ручной настройки связей между LocalizeStringEvent и TMP_Text.
  • Предотвращение накопления ненужных подписок, которые могут вызывать утечки памяти или ошибки.
  • Повышение удобства и автоматизация локализации текстовых элементов.

Как это работает :3

  1. При добавлении компонента LocalizedTMPTextBinder:
    • Проверяется наличие LocalizeStringEvent и TMP_Text.
    • Если их нет, они добавляются автоматически.
    • Настраивается связь между OnUpdateString и текстом TMP_Text.
  2. При удалении компонента:
    • Все подписки очищаются, чтобы избежать утечек.
  3. В режиме редактора:
    • Обеспечивается возможность визуального контроля через инспектор.

Атрибуты :3

  • [SelectionBase]: Выделяет объект с компонентом LocalizedTMPTextBinder при клике на дочерние объекты в сцене. Это упрощает выбор объекта в сложных иерархиях.
  • [DisallowMultipleComponent]: Запрещает добавлять несколько экземпляров компонента LocalizedTMPTextBinder на один объект, предотвращая дублирование логики и возможные ошибки.
  • [ExecuteAlways]: Обеспечивает выполнение компонента как в режиме игры, так и в режиме редактора. Это полезно для автоматической настройки в редакторе.
  • [RequireComponent]: Гарантирует наличие необходимых компонентов TMP_Text, LocalizeStringEvent, RectTransform и CanvasRenderer, предотвращая ошибки, если какой-либо из них отсутствует.

Лицензия ;3

Этот скрипт распространяется на условиях MIT License :3