LocalizedTMPTextBinder — это компонент Unity, предназначенный для автоматизации процесса связывания LocalizeStringEvent с текстом TMP_Text (TextMeshPro). Скрипт устраняет необходимость ручной настройки в инспекторе, автоматически добавляя и управляя обработчиками событий, связанными с локализацией текстовых элементов.
При использовании Unity Localization в связке с TextMeshPro часто требуется вручную привязывать событие OnUpdateString к TMP_Text.text. Это может быть трудоёмким и подверженным ошибкам процессом, особенно в крупных проектах. Этот компонент решает проблему автоматической привязки, что экономит время и предотвращает ошибки.
- Автоматическая привязка LocalizeStringEvent к TMP_Text.text.
- Удаление "висячих" подписок при удалении компонента.
- Работа в режиме редактора и игры.
- Гарантированное отсутствие дублирующихся подписок.
- Простая интеграция с существующими проектами.
- Скопируйте скрипт LocalizedTMPTextBinder в папку Scripts вашего Unity проекта.
- Убедитесь, что у вас установлены следующие зависимости:
- Добавьте компонент LocalizedTMPTextBinder на объект, содержащий TMP_Text, который вы хотите локализовать.
- Убедитесь, что на том же объекте уже присутствует компонент LocalizeStringEvent. Если его нет, Unity автоматически добавит его благодаря атрибуту [RequireComponent].
- В инспекторе задайте необходимые ссылки на таблицы и записи локализации в компоненте LocalizeStringEvent.
Вручную настройте LocalizeStringEvent:
- Добавьте компонент LocalizeStringEvent.
- Вручную свяжите событие OnUpdateString с TMP_Text.text.
- Убедитесь, что подписка корректно настроена.
Просто добавьте компонент LocalizedTMPTextBinder на объект, и всё произойдёт автоматически:
[AddComponentMenu("0x_/Localization/LocalizedTMPTextBinder")]
- OnUpdateString автоматически настроено на обновление TMP_Text.text.
- Подписка удаляется при удалении компонента.
- Работает только с TMP_Text. Если вы используете другой тип текста, например UI.Text, потребуется модификация скрипта.
- Динамическая привязка работает только для LocalizeStringEvent на том же объекте.
Проблемы, которые решает :3
- Устранение ручной настройки связей между LocalizeStringEvent и TMP_Text.
- Предотвращение накопления ненужных подписок, которые могут вызывать утечки памяти или ошибки.
- Повышение удобства и автоматизация локализации текстовых элементов.
- При добавлении компонента LocalizedTMPTextBinder:
- Проверяется наличие LocalizeStringEvent и TMP_Text.
- Если их нет, они добавляются автоматически.
- Настраивается связь между OnUpdateString и текстом TMP_Text.
- При удалении компонента:
- Все подписки очищаются, чтобы избежать утечек.
- В режиме редактора:
- Обеспечивается возможность визуального контроля через инспектор.
- [SelectionBase]: Выделяет объект с компонентом LocalizedTMPTextBinder при клике на дочерние объекты в сцене. Это упрощает выбор объекта в сложных иерархиях.
- [DisallowMultipleComponent]: Запрещает добавлять несколько экземпляров компонента LocalizedTMPTextBinder на один объект, предотвращая дублирование логики и возможные ошибки.
- [ExecuteAlways]: Обеспечивает выполнение компонента как в режиме игры, так и в режиме редактора. Это полезно для автоматической настройки в редакторе.
- [RequireComponent]: Гарантирует наличие необходимых компонентов TMP_Text, LocalizeStringEvent, RectTransform и CanvasRenderer, предотвращая ошибки, если какой-либо из них отсутствует.
Этот скрипт распространяется на условиях MIT License :3