Skip to content

Commit 1eea812

Browse files
committed
Added docs
1 parent cf6d8a9 commit 1eea812

File tree

1 file changed

+69
-2
lines changed

1 file changed

+69
-2
lines changed

README.md

Lines changed: 69 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,69 @@
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

Comments
 (0)