Bindables
Bindables is a reactive framework for managing your game state and syncing it to UI and gameplay. Easily bind to lists, dictionaries, derived state, animations, intervals, events, and even URIs.
by Virtual Maker
★★★★★ star rating
Price History +
bindables.dev | Documentation | Discord
Bindables brings the power of reactive programming to Unity—giving you a clean, declarative way to track game state and automatically reflect changes wherever they’re needed.
With Bindables, you declare your state using Bindable<T>, then declaratively bind that state to any Unity component—like UI text, images, animations, or prefabs. It works seamlessly across UGUI, UI Toolkit, and any other Unity objects.
Reactive by Design: State changes drive everything. You declare your bindings once and they update automatically.
Extension Methods: Bindables generates Bind extension methods to every Unity object (that you want). This makes easy and type-safe to bind to all built-in Unity types, 3rd party packages, and your own components. Materials, images, text, sprites, transforms, you name it.
UI Toolkit and uGUI Support: Works with both UI frameworks in the same way. Declare bindable state and bind it to UI components.
Two-Way Bindings: For input fields, sliders, dropdowns, and toggles, you can bind your state to update automatically on user input.
Advanced Bindings: Derived state, animations, time intervals, file URIs, and more.
FEATURES:
- Bindable: declare reactive state.
- Exension Methods: All Unity components get convenient new .Bind*() methods.
- For example: textmeshpro.BindText(playerName)
- Derived: transform or combine Bindables into new state.
- BindableList: Bind to lists to instantiate prefabs or visual elements.
- BindableDictionary: Bind to dictionaries to instantiate prefabs or visual elements.
- BindableAnimator: Drive animations using easing curves, math, or Unity animation curves.
- Bind to input actions, events, time intervals.
- Bind to file and web URIs to download images and audio clips.
- Automated event handler management with BindContext.
See examples at bindables.dev.