Skip to content

Компонент для автоматической привязки локализованных спрайтов к Image с помощью LocalizeSpriteEvent.

License

Notifications You must be signed in to change notification settings

RimuruDev/Unity-LocalizedImageBinder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LocalizedImageBinder

LocalizedImageBinder — это компонент Unity, предназначенный для автоматизации процесса связывания LocalizeSpriteEvent с компонентом Image. Скрипт устраняет необходимость ручной настройки в инспекторе, автоматически добавляя и управляя обработчиками событий, связанными с локализацией спрайтов.

Основная задача

При использовании Unity Localization в связке с компонентами Image часто требуется вручную привязывать событие OnUpdateAsset к свойству sprite объекта Image. Это может быть трудоёмким и подверженным ошибкам процессом, особенно в проектах с большим количеством локализованных спрайтов. Этот компонент решает проблему автоматической привязки, что экономит время и снижает вероятность ошибок.

Особенности

  • Автоматическая привязка LocalizeSpriteEvent к Image.sprite.
  • Удаление "висячих" подписок при удалении компонента.
  • Работа в режиме редактора и игры.
  • Гарантированное отсутствие дублирующихся подписок.
  • Простая интеграция с существующими проектами.

Установка

  1. Скопируйте скрипт LocalizedImageBinder в папку Scripts вашего Unity проекта.
  2. Убедитесь, что у вас установлены следующие зависимости:
image image

Использование

  1. Добавьте компонент LocalizedImageBinder на объект с компонентом Image.
  2. Убедитесь, что на том же объекте уже присутствует компонент LocalizeSpriteEvent. Если его нет, Unity автоматически добавит его благодаря атрибуту [RequireComponent].
  3. В инспекторе настройте таблицу и записи локализации для компонента LocalizeSpriteEvent.

Пример :D

До использования

Вручную настройте LocalizeSpriteEvent:

  1. Добавьте компонент LocalizeSpriteEvent.
  2. Вручную свяжите событие OnUpdateAsset с Image.sprite.
  3. Убедитесь, что подписка корректно настроена.

После использования

Просто добавьте компонент LocalizedImageBinder на объект, и всё произойдёт автоматически:

[AddComponentMenu("0x_/Localization/LocalizedImageBinder")]

Результат

  • OnUpdateAsset автоматически настроено на обновление Image.sprite.
  • Подписка удаляется при удалении компонента.
image

Ограничения :3

  • Работает только с компонентом Image. Для других компонентов (например, RawImage) потребуется модификация скрипта.
  • Динамическая привязка работает только для LocalizeSpriteEvent на том же объекте.

Проблемы, которые решает :3

  • Устранение ручной настройки связей между LocalizeSpriteEvent и Image.
  • Предотвращение накопления ненужных подписок, которые могут вызывать утечки памяти или ошибки.
  • Повышение удобства и автоматизация локализации спрайтов.

Как это работает :3

  1. При добавлении компонента LocalizedImageBinder:
    • Проверяется наличие LocalizeSpriteEvent и Image.
    • Если их нет, они добавляются автоматически.
    • Настраивается связь между OnUpdateAsset и Image.sprite.
  2. При удалении компонента:
    • Все подписки очищаются, чтобы избежать утечек.
  3. В режиме редактора:
    • Обеспечивается возможность визуального контроля через инспектор.

Атрибуты :3

  • [SelectionBase]: Выделяет объект с компонентом LocalizedImageBinder при клике на дочерние объекты в сцене. Это упрощает выбор объекта в сложных иерархиях.
  • [DisallowMultipleComponent]: Запрещает добавлять несколько экземпляров компонента LocalizedImageBinder на один объект, предотвращая дублирование логики и возможные ошибки.
  • [ExecuteAlways]: Обеспечивает выполнение компонента как в режиме игры, так и в режиме редактора. Это полезно для автоматической настройки в редакторе.
  • [RequireComponent]: Гарантирует наличие необходимых компонентов Image, LocalizeSpriteEvent и RectTransform, предотвращая ошибки, если какой-либо из них отсутствует.

Лицензия ;3

Этот скрипт распространяется на условиях MIT License :3