Hey everyone,
I’m excited to share the new generation of Binding System. It lets you link objects and their fields to anything in your project, with only a handful of clicks. Those links update at near native performance and zero allocations, allowing them to be used even within critical parts of the project.
With this asset, nearly all fields in all objects (even Unity’s own objects) can be bound to any field or property you have in the project, even non serialized ones. This opens up a huge number of possibilities where and when to use this asset.
Create themes with Binding System 2
Bind UI elements to physical objects and materials
This asset helps you design components without hard dependencies on other components and focus only on their core logic with simplified inputs and outputs. The linking of inputs and outputs can be easily handled by this utility. This leads to a better modular design of your project.
Additionally, binding values allows for a more advanced Scriptable Object Architecture, since it gives you the possibility to link even deeply nested properties of scriptable objects.
Materials can be bound as well, almost any field of them actually, thus allowing for wild interconnected effects…
Converters and Modifiers makes data manipulation of bound values very powerful and easy to use…
Hi everyone,
for those of you who encountered the problem of system hanging when trying to bind a highly recursive type, I am sorry for the inconvenience and have already provided a fix in version 2.0.3 which will be available on Asset Store very soon.
Hey everyone,
The version 2.0.3 is live. It adds a maximum depth slider in settings for bind paths retrieval and sets a minimum width for the binding paths popup. The reference to the documentation has been fixed as well.
Hi Everyone,
Version 2.0.4 is live. It adds some fixes and a brand new API to reroute bindings when there are properties with logic in setters and getters.
Here is the list of changes:
Added field rerouting API, to use properties instead of fields in specific cases (check documetation for more details)
Added Scenes Sanitization in settings, to remove erroneously added empty components
Fixed empty proxy bindings being added when selecting game objects
Fixed converters not being registered automatically
Hi Everyone,
Version 2.1.0 is live and it brings a couple of powerful new features along with some minor fixes and improvements.
Math Expressions is a family of powerful modifiers which allow to modify the values in the pipeline with arbitrary math functions and variables.
The same expressions can be used for each channel of colors or vectors, which can be used as well to mix and/or swap the channels.
Below are the expressions for color fields
Bind Reroute allows to change a bind path from fields to their respective properties or other fields. This is helpful when there are properties which contain logic in their setters or getters and need to be executed on each value change, which is not the case for the serialized and bound fields. Check the documentation for more details.
… and some small under the hood improvements and fixes.
Let me know what you think.
Any suggestions are very welcome.
Hi Everyone,
Version 2.1.1 is live and it brings a new powerful tool Refactor System with some fixes and improvements under the hood.
Refactor System intercepts code changes related to already bound fields and lets the user decide how to proceed with such modifications. It is useful to keep your projects clean of invalid bindings and adapt them semi-automatically.
Other improvements include a better integration with Odin Inspector, a more robust field rerouting logic and an easier to use bind popup.
Hi everyone,
I’ve been working recently on a bind dependencies window and I would like to know your thoughts about it. Currently it’s around 70% complete and hopefully will be release-ready by next week.
This tool deeply analyzes asynchronously all objects in the project and registers all bindings which point to target object.
Let me know your thoughts about having such a tool…
Can I manually trigger its update or add a new update cycle? For example, if I bind an object’s position and rotation to a character’s bone transform, but the character’s bone animation is calculated by Final IK’s Full Body IK, and the IK update cycle is very late, this means that the binding update will always happen earlier than the bone update, causing a one-frame delay in the binding of the object.
And I also the same issue with MagicaCloth2. But they all offer an action like OnPostSimulation.
Hi @Ankii ,
Thank you for asking. I am not accustomed with how FinalIK or MagicaCloth work, but if I get it correctly you would like something to trigger an update of the bound value. Adding a new “update point” is relatively an easy task to do, but it cannot be done out-of-the-box with the current version (maybe I’ll DM you and let you have a custom version of that if you don’t mind).
If OnPostSimulation is an event, either C# or Unity one, it may be useful maybe to have a way to hook to that event and update the value once the event is fired.
Let me know what seems more useful to you, adding a possibility to add a custom “update point” or add the option to hook to events, so I can adjust the dev plans accordingly…
I think the approach of hooking into that event or implementing a manual update mode similar to Cinemachine might offer more versatility and flexibility.
Hey everyone,
A new update (v2.2.1) is coming shortly, bringing a vastly improved Bindings Dependencies window along with some smaller bug fixes!
Here’s what’s new:
• You can now search dependencies for multiple objects at once.
• Folders can be included in searches.
• GameObjects will automatically add their nested hierarchies as search targets by default.
• New way of searching objects: drag them onto the left panel, and the search will start immediately.
Here’s a quick demo below:
Let me know your thoughts on this new improvement.
Hello everyone,
I’m pleased to announce that the next version 2.2.2 will be soon available to download.
It brings a new update point for bindings: just before rendering the frame, which is useful when applying changes from animations and/or IK (thanks @Ankii )
It also allows to manually update the bound fields through Unity Events in Inspector, check it out in this video:
Just a quick heads-up: a compile error slipped into version 2.2.2, but only on certain Windows machines. Oops my bad! We’ve fixed it in version 2.2.3, which is now available for download.
Thanks for your patience, and sorry for the trouble!
Hi, thanks for this asset, it’s so great! It’s already saved me so much glue code. Question, is there a way to scale an object only in one axis? I can get it to scale in every axis as a Vector3 but I can’t figure out how to scale in just the Z axis.
Hi @noise_source ,
Thank you for reaching out and thanks for the kind words.
As for the question, have you tried to use a Vector Expression? It can be added from the Bind Menu. With the expression you could do the following to scale only on Z axis:
Hi Everyone,
Version 2.2.4 is out and it brings some fixes along with a brand new modifier for boolean expressions. With it you can create complex boolean logic and link multiple bound fields together. These may be useful when you want to have a complex condition which is based on multiple parameters, for example waiting for multiple switches before turning on an engine…