|
1 | | -# Unity-LocalizedTMPTextBinder |
2 | | - |
| 1 | +# LocalizedTMPTextBinder |
| 2 | + |
| 3 | +`LocalizedTMPTextBinder` — это компонент Unity, предназначенный для автоматизации процесса связывания `LocalizeStringEvent` с текстом `TMP_Text` (TextMeshPro). Скрипт устраняет необходимость ручной настройки в инспекторе, автоматически добавляя и управляя обработчиками событий, связанными с локализацией текстовых элементов. |
| 4 | + |
| 5 | +## Основная задача |
| 6 | +При использовании Unity Localization в связке с TextMeshPro часто требуется вручную привязывать событие `OnUpdateString` к `TMP_Text.text`. Это может быть трудоёмким и подверженным ошибкам процессом, особенно в крупных проектах. Этот компонент решает проблему автоматической привязки, что экономит время и предотвращает ошибки. |
| 7 | + |
| 8 | +## Особенности |
| 9 | +- Автоматическая привязка `LocalizeStringEvent` к `TMP_Text.text`. |
| 10 | +- Удаление "висячих" подписок при удалении компонента. |
| 11 | +- Работа в режиме редактора и игры. |
| 12 | +- Гарантированное отсутствие дублирующихся подписок. |
| 13 | +- Простая интеграция с существующими проектами. |
| 14 | + |
| 15 | +## Установка |
| 16 | +1. Скопируйте скрипт `LocalizedTMPTextBinder` в папку `Scripts` вашего Unity проекта. |
| 17 | +2. Убедитесь, что у вас установлены следующие зависимости: |
| 18 | + - [TextMeshPro](https://docs.unity3d.com/Packages/com.unity.textmeshpro@latest). |
| 19 | + - [Unity Localization](https://docs.unity3d.com/Packages/com.unity.localization@latest). |
| 20 | + |
| 21 | +## Использование |
| 22 | +1. Добавьте компонент `LocalizedTMPTextBinder` на объект, содержащий `TMP_Text`, который вы хотите локализовать. |
| 23 | +2. Убедитесь, что на том же объекте уже присутствует компонент `LocalizeStringEvent`. Если его нет, Unity автоматически добавит его благодаря атрибуту `[RequireComponent]`. |
| 24 | +3. В инспекторе задайте необходимые ссылки на таблицы и записи локализации в компоненте `LocalizeStringEvent`. |
| 25 | + |
| 26 | +## Пример :D |
| 27 | +### До использования |
| 28 | +Вручную настройте `LocalizeStringEvent`: |
| 29 | +1. Добавьте компонент `LocalizeStringEvent`. |
| 30 | +2. Вручную свяжите событие `OnUpdateString` с `TMP_Text.text`. |
| 31 | +3. Убедитесь, что подписка корректно настроена. |
| 32 | + |
| 33 | +### После использования |
| 34 | +Просто добавьте компонент `LocalizedTMPTextBinder` на объект, и всё произойдёт автоматически: |
| 35 | +```csharp |
| 36 | +[AddComponentMenu("0x_/Localization/LocalizedTMPTextBinder")] |
| 37 | +``` |
| 38 | + |
| 39 | +### Результат |
| 40 | +- `OnUpdateString` автоматически настроено на обновление `TMP_Text.text`. |
| 41 | +- Подписка удаляется при удалении компонента. |
| 42 | + |
| 43 | +## Ограничения :3 |
| 44 | +- Работает только с `TMP_Text`. Если вы используете другой тип текста, например `UI.Text`, потребуется модификация скрипта. |
| 45 | +- Динамическая привязка работает только для `LocalizeStringEvent` на том же объекте. |
| 46 | + |
| 47 | +## Проблемы, которые решает :3 |
| 48 | +- Устранение ручной настройки связей между `LocalizeStringEvent` и `TMP_Text`. |
| 49 | +- Предотвращение накопления ненужных подписок, которые могут вызывать утечки памяти или ошибки. |
| 50 | +- Повышение удобства и автоматизация локализации текстовых элементов. |
| 51 | + |
| 52 | +## Как это работает :3 |
| 53 | +1. При добавлении компонента `LocalizedTMPTextBinder`: |
| 54 | + - Проверяется наличие `LocalizeStringEvent` и `TMP_Text`. |
| 55 | + - Если их нет, они добавляются автоматически. |
| 56 | + - Настраивается связь между `OnUpdateString` и текстом `TMP_Text`. |
| 57 | +2. При удалении компонента: |
| 58 | + - Все подписки очищаются, чтобы избежать утечек. |
| 59 | +3. В режиме редактора: |
| 60 | + - Обеспечивается возможность визуального контроля через инспектор. |
| 61 | + |
| 62 | +## Атрибуты :3 |
| 63 | +- `[SelectionBase]`: Выделяет объект с компонентом `LocalizedTMPTextBinder` при клике на дочерние объекты в сцене. Это упрощает выбор объекта в сложных иерархиях. |
| 64 | +- `[DisallowMultipleComponent]`: Запрещает добавлять несколько экземпляров компонента `LocalizedTMPTextBinder` на один объект, предотвращая дублирование логики и возможные ошибки. |
| 65 | +- `[ExecuteAlways]`: Обеспечивает выполнение компонента как в режиме игры, так и в режиме редактора. Это полезно для автоматической настройки в редакторе. |
| 66 | +- `[RequireComponent]`: Гарантирует наличие необходимых компонентов `TMP_Text`, `LocalizeStringEvent`, `RectTransform` и `CanvasRenderer`, предотвращая ошибки, если какой-либо из них отсутствует. |
| 67 | + |
| 68 | +## Лицензия ;3 |
| 69 | +Этот скрипт распространяется на условиях MIT License :3 |
0 commit comments