Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rimurudev/unity-localizedtmptextbinder
Компонент для автоматической привязки локализованного текста TextMeshPro (TMP_Text) с помощью LocalizeStringEvent.
https://github.com/rimurudev/unity-localizedtmptextbinder
editorutility localization localization-binder localizestringevent textmesh textmeshpro tmptext tmptext-binder unity-localization unity-localize unityeventstring unityeventtools
Last synced: 7 days ago
JSON representation
Компонент для автоматической привязки локализованного текста TextMeshPro (TMP_Text) с помощью LocalizeStringEvent.
- Host: GitHub
- URL: https://github.com/rimurudev/unity-localizedtmptextbinder
- Owner: RimuruDev
- License: mit
- Created: 2024-12-28T10:34:19.000Z (10 days ago)
- Default Branch: main
- Last Pushed: 2024-12-28T10:43:41.000Z (10 days ago)
- Last Synced: 2024-12-28T11:25:28.616Z (10 days ago)
- Topics: editorutility, localization, localization-binder, localizestringevent, textmesh, textmeshpro, tmptext, tmptext-binder, unity-localization, unity-localize, unityeventstring, unityeventtools
- Language: C#
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LocalizedTMPTextBinder
`LocalizedTMPTextBinder` — это компонент Unity, предназначенный для автоматизации процесса связывания `LocalizeStringEvent` с текстом `TMP_Text` (TextMeshPro). Скрипт устраняет необходимость ручной настройки в инспекторе, автоматически добавляя и управляя обработчиками событий, связанными с локализацией текстовых элементов.
## Основная задача
При использовании Unity Localization в связке с TextMeshPro часто требуется вручную привязывать событие `OnUpdateString` к `TMP_Text.text`. Это может быть трудоёмким и подверженным ошибкам процессом, особенно в крупных проектах. Этот компонент решает проблему автоматической привязки, что экономит время и предотвращает ошибки.## Особенности
- Автоматическая привязка `LocalizeStringEvent` к `TMP_Text.text`.
- Удаление "висячих" подписок при удалении компонента.
- Работа в режиме редактора и игры.
- Гарантированное отсутствие дублирующихся подписок.
- Простая интеграция с существующими проектами.## Установка
1. Скопируйте скрипт `LocalizedTMPTextBinder` в папку `Scripts` вашего Unity проекта.
2. Убедитесь, что у вас установлены следующие зависимости:
- [TextMeshPro](https://docs.unity3d.com/Packages/com.unity.textmeshpro@latest).
- [Unity Localization](https://docs.unity3d.com/Packages/com.unity.localization@latest).
## Использование
1. Добавьте компонент `LocalizedTMPTextBinder` на объект, содержащий `TMP_Text`, который вы хотите локализовать.
2. Убедитесь, что на том же объекте уже присутствует компонент `LocalizeStringEvent`. Если его нет, Unity автоматически добавит его благодаря атрибуту `[RequireComponent]`.
3. В инспекторе задайте необходимые ссылки на таблицы и записи локализации в компоненте `LocalizeStringEvent`.## Пример :D
### До использования
Вручную настройте `LocalizeStringEvent`:
1. Добавьте компонент `LocalizeStringEvent`.
2. Вручную свяжите событие `OnUpdateString` с `TMP_Text.text`.
3. Убедитесь, что подписка корректно настроена.### После использования
Просто добавьте компонент `LocalizedTMPTextBinder` на объект, и всё произойдёт автоматически:
```csharp
[AddComponentMenu("0x_/Localization/LocalizedTMPTextBinder")]
```### Результат
- `OnUpdateString` автоматически настроено на обновление `TMP_Text.text`.
- Подписка удаляется при удалении компонента.## Ограничения :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