Unity UI data binding
Как отделить логику от интерфейса в Unity, чтобы не получилась каша?
Есть давно устоявшиеся паттерны и «best practices». Хотя для Unity последних не так уж и много, как например для node.js. Можно использовать эвенты, делегаты, обсерверы, вот это все, если говорить об использовании C# в Unity. Есть и готовые ассеты в Asset Store.
В общем, это то, что я начал писать сам, но вовремя нашел почти готовое решение, которое меня устраивает. После небольшого допиливания будет вообще супер — библиотека для простого биндинга в Unity.
Работает все очень просто:
- Импортируете DataBind.unitypackage в Unity
- Добавляете скрипт DataBindContext к родительскому объекту
- Добавляете скрипт Bind[нужный тип] к основным объектам
- Вызываете dataBindContext[key] = value для биндинга
- Все. Присвоили значение переменной — оно поменялось в UI Text, например.
Можно связывать любые параметры, использовать готовые биндинги которые идут в пакете, можно написать свой. И все достаточно просто и не ресурсоемко.
Обновление 25.01.2017
У Leopotam «прокачанная» версия биндинга https://github.com/Leopotam/LeopotamGroupLibraryUnity/tree/master/SystemUi/DataBinding