[Documentation] | [Roadmap] | [Discussions] | [Tutorials]
Binding System 2 gives you the power to link a field directly in inspector to other properties or fields, even very deeply nested ones, with high performance and virtually zero allocations.
This may seem simple at first, but it opens a world of possibilities:
► Create complete UI systems linked to a few "config" files, like themes, palettes and labels, all with instant updates without going into Play mode.
► Make scripts modular and highly reusable. Let them control other scripts without direct dependencies, like 3D sliders opening doors, motors increasing pressure, switches turning on lights.
► Have a complete Dependency Injection system at various granularities. Greatly increase re-use of components.
► Work with SOAP (Scriptable Object Architecture Pattern) on another level. Link even deeply nested properties from scriptable objects and switch them when needed.
► Let effects adapt to your game logic, like changing particle systems color and speed based on character's health.
► Link materials properties to game values, like metal glowing red on high temperatures or let transparency adapt to object density.
► Change light properties based on flashlight remaining energy.
► and so many others...
★ Note to programmers: this leads to increased modularity between objects and a better architecture overall.
✔ The setup is straightforward: import the asset, right click on a field and have your first bound field already...
Once a field is bound, there are plenty of options to manipulate the binding with converters, simple yet powerful modifiers and advanced tools like accessor providers...
★ High-Level Features:
⦿ Quick Data Binding: Instantly connect serialized values to any property, even non serialized ones, directly in Unity Editor without any code manipulation.
⦿ Two Binding Approaches: Bind any compatible field for any object directly in Inspector (even Unity's own components), or transform your scripts' fields in code to bindable counterparts for maximum performance.
⦿ Non-Destructive Bind: Bind any compatible field without altering its internal data and without changing its code structure.
⦿ Intuitive Setup: The user interface is as user-friendly and non-intrusive as it gets with a searchable dropdown menu for efficient binding configuration.
⦿ Real-Time Debugging: Identify and resolve issues with Live Debug and error visualizations. Get to see how data flows during runtime.
⦿ Custom Extensibility: The system can be easily extended with new converters, modifiers, and value providers, thus adding new capabilities to the system.
⦿ Optimized Performance: The whole system architecture was built to provide high-performance operations, optimized reflection, and methods generation with virtually no memory allocations.
This asset is like "a solution in search of problems" and trust us, you will find plenty of problems that this solution will solve...
Unlike Binding System v1, this asset is provided with its source code!
For Samples, check the documentation on how to enable them.
IMPORTANT! If you're upgrading from version 1, please read the documentation on how to upgrade without friction.
2.5.5
- Added: new modifiers templates system. Create your own variation of modifiers and use them when binding fields. Check documentation for more details.
2.5.4
- Added: Null Propagation option for all bound fields. When enabled and in case of null values within the value retrieval, instead of logging an error, a default value is returned. The option can be set within Bind Menu.
- Improved: small speedup for fields bound to deeper paths.
2.5.3
- Fixed: Classic Bind proxies would return a default value instead of raising errors.
- Fixed: Fields drawn with IMGUI within UI Toolkit drawn components would show nothing when binding (e.g. LocalizedString).
- Fixed: Binding with Odin 4 on some occasions would return a nullref.
- Fixed: Changing some settings won't save them for the next play session.
- Fixed: Some derived modifiers are not registered into the system.
- Changed: Creating new modifier types will now be registered into the system without waiting for a subsequent recompile.
2.5.2
- Added fallback mechanism to make the system work in case the dlls are removed (for some enterprise users) although at a very small performance cost.
- Added support for both input methods for sample scenes.
2.5.1
- Added Phased Bindings option which increases performance by up to 30% for complex pipelines, those with costly converters and multiple modifiers.
- Added Color Swizzle modifier, which allows to mix channels in a more straightforward way.
- Fixed issues when live debugging old bindings and wrapped bound values.
- Fixed critical issue with Mathematics package, where trying to bind its components would hang the system.
- Fixed an issue which would occasionally spam the console on code recompilation.
- Fixed an issue which prevented some bindings to end up in applications built with IL2CPP.
- Fixed some cosmetic issues.
- Added URP version of BindingDemo scene and switched to New Input System.
- Removed Legacy BindingDemo scene to reduce overall package size.
2.5.0
- Added monitoring window, which tracks all active bindings along with their performance.
- Added pre-conversion modifiers, allowing data to be manipulated just before converting it.
- Added binding template in settings, which let the user define the default behaviour for new bindings
- Added additional sections to Binding Settings, for more controls.
- Added short-circuit converters, which override the main pipeline and write the value directly for increased performance.
- Improved "Optimized Update" option. Now it won't skip updates and its performance has further been increased.
- Improved String Format converters and modifiers.
- Improved live debug feature.
- Fixed an issue where color alpha set to zero won't trigger a bind update.
- Fixed an issue where Refactoring Window will popup on generic error.
- Fixed an issue where an invalid bind proxy will spam the console.
- Fixed deprecation issues on Unity 6.2
- Fixed multiple UI related issues.