|
1 | | -# Unity-LocalizedImageBinder |
2 | | - Компонент для автоматической привязки локализованных спрайтов к Image с помощью LocalizeSpriteEvent. |
| 1 | +# LocalizedImageBinder |
| 2 | + |
| 3 | +`LocalizedImageBinder` — это компонент Unity, предназначенный для автоматизации процесса связывания `LocalizeSpriteEvent` с компонентом `Image`. Скрипт устраняет необходимость ручной настройки в инспекторе, автоматически добавляя и управляя обработчиками событий, связанными с локализацией спрайтов. |
| 4 | + |
| 5 | +## Основная задача |
| 6 | +При использовании Unity Localization в связке с компонентами `Image` часто требуется вручную привязывать событие `OnUpdateAsset` к свойству `sprite` объекта `Image`. Это может быть трудоёмким и подверженным ошибкам процессом, особенно в проектах с большим количеством локализованных спрайтов. Этот компонент решает проблему автоматической привязки, что экономит время и снижает вероятность ошибок. |
| 7 | + |
| 8 | +## Особенности |
| 9 | +- Автоматическая привязка `LocalizeSpriteEvent` к `Image.sprite`. |
| 10 | +- Удаление "висячих" подписок при удалении компонента. |
| 11 | +- Работа в режиме редактора и игры. |
| 12 | +- Гарантированное отсутствие дублирующихся подписок. |
| 13 | +- Простая интеграция с существующими проектами. |
| 14 | + |
| 15 | +## Установка |
| 16 | +1. Скопируйте скрипт `LocalizedImageBinder` в папку `Scripts` вашего Unity проекта. |
| 17 | +2. Убедитесь, что у вас установлены следующие зависимости: |
| 18 | + - [Unity UI](https://docs.unity3d.com/Packages/com.unity.ugui@latest). |
| 19 | + - [Unity Localization](https://docs.unity3d.com/Packages/com.unity.localization@latest). |
| 20 | + |
| 21 | +--- |
| 22 | + |
| 23 | +## Использование |
| 24 | +1. Добавьте компонент `LocalizedImageBinder` на объект с компонентом `Image`. |
| 25 | +2. Убедитесь, что на том же объекте уже присутствует компонент `LocalizeSpriteEvent`. Если его нет, Unity автоматически добавит его благодаря атрибуту `[RequireComponent]`. |
| 26 | +3. В инспекторе настройте таблицу и записи локализации для компонента `LocalizeSpriteEvent`. |
| 27 | + |
| 28 | +--- |
| 29 | + |
| 30 | +## Пример :D |
| 31 | +### До использования |
| 32 | +Вручную настройте `LocalizeSpriteEvent`: |
| 33 | +1. Добавьте компонент `LocalizeSpriteEvent`. |
| 34 | +2. Вручную свяжите событие `OnUpdateAsset` с `Image.sprite`. |
| 35 | +3. Убедитесь, что подписка корректно настроена. |
| 36 | + |
| 37 | +### После использования |
| 38 | +Просто добавьте компонент `LocalizedImageBinder` на объект, и всё произойдёт автоматически: |
| 39 | +```csharp |
| 40 | +[AddComponentMenu("0x_/Localization/LocalizedImageBinder")] |
| 41 | +``` |
| 42 | + |
| 43 | +### Результат |
| 44 | +- `OnUpdateAsset` автоматически настроено на обновление `Image.sprite`. |
| 45 | +- Подписка удаляется при удалении компонента. |
| 46 | + <img width="677" alt="image" src="https://github.com/user-attachments/assets/example-image.png" /> |
| 47 | + |
| 48 | +--- |
| 49 | + |
| 50 | +## Ограничения :3 |
| 51 | +- Работает только с компонентом `Image`. Для других компонентов (например, `RawImage`) потребуется модификация скрипта. |
| 52 | +- Динамическая привязка работает только для `LocalizeSpriteEvent` на том же объекте. |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +## Проблемы, которые решает :3 |
| 57 | +- Устранение ручной настройки связей между `LocalizeSpriteEvent` и `Image`. |
| 58 | +- Предотвращение накопления ненужных подписок, которые могут вызывать утечки памяти или ошибки. |
| 59 | +- Повышение удобства и автоматизация локализации спрайтов. |
| 60 | + |
| 61 | +--- |
| 62 | + |
| 63 | +## Как это работает :3 |
| 64 | +1. При добавлении компонента `LocalizedImageBinder`: |
| 65 | + - Проверяется наличие `LocalizeSpriteEvent` и `Image`. |
| 66 | + - Если их нет, они добавляются автоматически. |
| 67 | + - Настраивается связь между `OnUpdateAsset` и `Image.sprite`. |
| 68 | +2. При удалении компонента: |
| 69 | + - Все подписки очищаются, чтобы избежать утечек. |
| 70 | +3. В режиме редактора: |
| 71 | + - Обеспечивается возможность визуального контроля через инспектор. |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## Атрибуты :3 |
| 76 | +- `[SelectionBase]`: Выделяет объект с компонентом `LocalizedImageBinder` при клике на дочерние объекты в сцене. Это упрощает выбор объекта в сложных иерархиях. |
| 77 | +- `[DisallowMultipleComponent]`: Запрещает добавлять несколько экземпляров компонента `LocalizedImageBinder` на один объект, предотвращая дублирование логики и возможные ошибки. |
| 78 | +- `[ExecuteAlways]`: Обеспечивает выполнение компонента как в режиме игры, так и в режиме редактора. Это полезно для автоматической настройки в редакторе. |
| 79 | +- `[RequireComponent]`: Гарантирует наличие необходимых компонентов `Image`, `LocalizeSpriteEvent` и `RectTransform`, предотвращая ошибки, если какой-либо из них отсутствует. |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +## Лицензия ;3 |
| 84 | +Этот скрипт распространяется на условиях MIT License :3 |
0 commit comments