## Overview The BindingSystem 2 is a robust Unity plugin that brings generalized value binding within projects. This comprehensive guide will walk you through the plugin's features, from binding any field to the core Bind class and extending its functionality with converters, modifiers, and more. **High-Level Features**: 1. **Quick Data Binding:** Instantly connect serialized values to any Unity property, even non serialized ones, directly in Unity Editor without any code manipulation. 2. **Two Binding Approaches:** Bind any compatible field for any object directly in Inspector (even to Unity's own components), or transform your scripts' fields to bindable counterparts for maximum performance. 3. **Non-Destructive Bind:** Bind any compatible field without altering its internal data and without changing its code structure. 4. **Opt-in Design:** Once changed to bindable value, you decide whether to bind the value or just use it's pure value, without having to change your code. 5. **Intuitive Setup:** The user interface is as user-friendly and non-intrusive as it gets with a searchable dropdown menu for efficient binding configuration. 6. **Real-Time Debugging:** Identify and resolve issues with Live Debug and error visualizations, gaining valuable insights into data flow during runtime. 7. **Custom Extensibility:** The system can be easily extended with new converters, modifiers, and value providers, thus adding new capabilities to the system. 8. **Optimized Performance:** The whole system architecture was built to provide high-performance operations, optimized reflection, and methods generation with virtually no memory allocations. ## Why BindingSystem? The main ideology for BindingSystem is loosely based on Dependency Injection paradigm with some major differences. There are some prominent use-cases where you can use Binding System: ### Code Modularization You can define a physics door for example, which acts as a door but reponds to physics events as well. This door has some parameters, both for setup and for controlling the door. In typical coding fashion, to control the door, you need to add it into another _**controller component**_ and pass it somehow to this controller. This creates a direct dependency: