From 2893033dcec34be1b29d08f169822cf4797be438 Mon Sep 17 00:00:00 2001
From: ls9512 <598914653@qq.com>
Date: Mon, 26 Feb 2024 17:53:39 +0800
Subject: [PATCH] Ver 2024.2.26 Preview
1. Integrate most interfaces into the UBind static class and call them uniformly
2. Some APIs and class names have been changed and are incompatible with old versions.
3. The version number is changed to year and date format, consistent with other UPlugin series plug-ins.
4. Optimize editor style
---
.github/README.md | 12 +-
.github/README_CN.md | 14 +-
Editor/Script/BaseBinderEditor.cs | 6 +-
Editor/Script/ComponentBinderEditor.cs | 6 +-
Editor/Script/TypeBinderEditor.cs | 6 +-
Editor/Script/Util/EditorStyle.cs | 8 +-
Editor/Script/Util/EditorUtil.cs | 87 ++++++++---
Editor/Script/Util/GUIStruct.cs | 39 ++++-
Extension.meta | 2 +-
.../Script/TMPTextFormatValueBinder.cs | 2 +-
Runtime/Script/Attribute/BindAttribute.cs | 6 +-
Runtime/Script/Attribute/BindTypeAttribute.cs | 2 +-
.../Attribute/BindTypeSourceAttribute.cs | 2 +-
.../Script/Bindable/BindableMonoBehaviour.cs | 4 +-
Runtime/Script/Bindable/BindableObject.cs | 4 +-
.../Script/Binder/RuntimePropertyBinder.cs | 4 +-
Runtime/Script/Binder/RuntimeTypeBinder.cs | 8 +-
Runtime/Script/Binder/RuntimeValueBinder.cs | 8 +-
.../Script/Component/Base/ComponentBinder.cs | 6 +-
Runtime/Script/Component/PropertyBinder.cs | 2 +-
Runtime/Script/Component/TypeBinder.cs | 4 +-
.../Component/UI/TextFormatValueBinder.cs | 2 +-
Runtime/Script/Converter/DataConverter.cs | 9 +-
Runtime/Script/Core/BindMap.cs | 58 +++----
Runtime/Script/Core/DataBinder(T).cs | 4 +-
Runtime/Script/Core/DataBinder(T2).cs | 2 +-
Runtime/Script/Core/DataBinder.cs | 10 +-
Runtime/Script/Core/DataContainer.cs | 133 ++++++++++++++++
...aContext.cs.meta => DataContainer.cs.meta} | 0
Runtime/Script/Core/DataContext.cs | 146 ------------------
Runtime/Script/Core/TypeCaches.cs | 64 ++++----
Runtime/Script/UBind.cs | 118 ++++++++------
Samples.meta | 2 +-
package.json | 6 +-
34 files changed, 430 insertions(+), 356 deletions(-)
create mode 100644 Runtime/Script/Core/DataContainer.cs
rename Runtime/Script/Core/{DataContext.cs.meta => DataContainer.cs.meta} (100%)
delete mode 100644 Runtime/Script/Core/DataContext.cs
diff --git a/.github/README.md b/.github/README.md
index 5e5f3a0..396fdc6 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -40,7 +40,7 @@
* 4.1. [Attribute](#Attribute)
* 4.1.1. [Bind Value Attribute](#BindValueAttribute)
* 4.1.2. [Bind Type Attribute](#BindTypeAttribute)
- * 4.2. [Data Context](#DataContext)
+ * 4.2. [Data Container](#DataContainer)
* 4.3. [Data Binder](#DataBinder)
* 4.4. [Data Converter](#DataConverter)
* 4.5. [Component Binder](#ComponentBinder)
@@ -158,12 +158,12 @@ public class ExanokeMonoBehaviour : MonoBehaviour
public void OnEnable()
{
- BindMap.Bind(this);
+ UBind.RegisterMap(this);
}
public void OnDisable()
{
- BindMap.UnBind(this);
+ UBind.DeRegisterMap(this);
}
}
```
@@ -253,7 +253,7 @@ When the data source does not have the ability to actively trigger data changes,
It is used to mark attributes and fields that need to be bound in a class that has the ability to handle binding relationships. It is only recommended to bind common basic data types. The marked object will dynamically create a **RuntimeValueBinder** for processing.
#### 4.1.2. Bind Type Attribute
Unlike **BindValueAttribute**, it is used to mark custom class and structure type objects, and **RuntimeTypeBinder** is dynamically created for processing.
-### 4.2. Data Context
+### 4.2. Data Container
The data container is used to maintain a set of Data Binder, which can contain multiple data sources and data destinations. Each data container is independent of each other.
### 4.3. Data Binder
@@ -289,7 +289,7 @@ Used to cache all the binding structure information of the objects marked by **B
***
-## 5. Built-in components
+## 5. Built-in Components
|Component|Binding object type|Default binding property|Binding property type|
|-|-|-|-|
|Text Binder|Text|text|string|
@@ -311,7 +311,7 @@ Used to cache all the binding structure information of the objects marked by **B
***
-## 6. Custom extension
+## 6. Custom Extension
### 6.1. Custom Data Binder
Implement a runtime data binder for a specific object and property by inheriting **DataBinder**:
``` cs
diff --git a/.github/README_CN.md b/.github/README_CN.md
index 25d313b..e33e836 100644
--- a/.github/README_CN.md
+++ b/.github/README_CN.md
@@ -40,7 +40,7 @@
* 4.1. [Attribute](#Attribute)
* 4.1.1. [Bind Value Attribute](#BindValueAttribute)
* 4.1.2. [Bind Type Attribute](#BindTypeAttribute)
- * 4.2. [Data Context](#DataContext)
+ * 4.2. [Data Container](#DataContainer)
* 4.3. [Data Binder](#DataBinder)
* 4.4. [Data Converter](#DataConverter)
* 4.5. [Component Binder](#ComponentBinder)
@@ -158,12 +158,12 @@ public class ExanokeMonoBehaviour : MonoBehaviour
public void OnEnable()
{
- BindMap.Bind(this);
+ UBind.RegisterMap(this);
}
public void OnDisable()
{
- BindMap.UnBind(this);
+ UBind.DeRegisterMap(this);
}
}
```
@@ -253,7 +253,7 @@ public class ExampleClass
用于在拥有处理绑定关系能力的类中标记需要绑定的属性和字段,只推荐绑定常见基础数据类型。被标记对象会动态创建 **RuntimeValueBinder** 进行处理。
#### 4.1.2. Bind Type Attribute
与 **BindValueAttribute** 的不同,用于标记自定义类和结构体类型对象,会动态创建 **RuntimeTypeBinder** 进行处理。
-### 4.2. Data Context
+### 4.2. Data Container
数据容器,用于维护一组 Data Binder,可以包含多个数据源和数据目标点。每个数据容器相互独立。
### 4.3. Data Binder
@@ -275,7 +275,7 @@ Convert.ChangeType(object data, Type type);
```
可以按需要使用以下接口提前注册特定类型的自定义转换器:
``` cs
-DataConvert.Register(Type sourceType, Type targetType, DataConverter dataConverter);
+UBind.RegisterConverter(Type sourceType, Type targetType, DataConverter dataConverter);
```
### 4.5. Component Binder
@@ -285,7 +285,7 @@ DataConvert.Register(Type sourceType, Type targetType, DataConverter dataConvert
基于 **MonoBehaviour** 生命周期实现,用于统一维护需要主动更新数据的 **DataBinder** 的更新周期。
### 4.7. Bind Map
-
+用于缓存类中所有被 **BindAttribute** 所标记的字段和属性信息。
***
@@ -365,7 +365,7 @@ public class CustomDataConverter : DataConverter
``` cs
var sourcetType = sourceData.GetType();
var targetType = targetData.GetType();
-DataConverter.Register((sourceType, targetType), new CustomDataConverter());
+UBind.RegisterConverter((sourceType, targetType), new CustomDataConverter());
```
***
diff --git a/Editor/Script/BaseBinderEditor.cs b/Editor/Script/BaseBinderEditor.cs
index 3bc77b0..02ba95d 100644
--- a/Editor/Script/BaseBinderEditor.cs
+++ b/Editor/Script/BaseBinderEditor.cs
@@ -6,9 +6,9 @@ namespace Aya.DataBinding
{
public class BaseBinderEditor : Editor
{
- protected void DrawContextKey(SerializedProperty property)
+ protected void DrawContainerKey(SerializedProperty property)
{
- if (property.stringValue == DataContext.Default)
+ if (property.stringValue == DataContainer.Default)
{
using (new ColorScope(Color.gray))
{
@@ -34,7 +34,7 @@ protected void DrawDataKey(SerializedProperty property)
protected void DrawDirection(SerializedProperty property)
{
- EditorGUILayout.PropertyField(property);
+ EditorUtil.DrawToolbarEnum(property, typeof(DataDirection));
}
protected void DrawTarget(SerializedProperty property, Transform root) where TComponent : Component
diff --git a/Editor/Script/ComponentBinderEditor.cs b/Editor/Script/ComponentBinderEditor.cs
index 181864e..b4dfccd 100644
--- a/Editor/Script/ComponentBinderEditor.cs
+++ b/Editor/Script/ComponentBinderEditor.cs
@@ -11,7 +11,7 @@ public abstract class ComponentBinderEditor : B
{
public ComponentBinder ComponentBinder => target as ComponentBinder;
- protected SerializedProperty ContextKeyProperty;
+ protected SerializedProperty ContainerKeyProperty;
protected SerializedProperty DataKeyProperty;
protected SerializedProperty DirectionProperty;
protected SerializedProperty UpdateTypeProperty;
@@ -19,7 +19,7 @@ public abstract class ComponentBinderEditor : B
public virtual void OnEnable()
{
- ContextKeyProperty = serializedObject.FindProperty(nameof(ComponentBinder.Context));
+ ContainerKeyProperty = serializedObject.FindProperty(nameof(ComponentBinder.Container));
DataKeyProperty = serializedObject.FindProperty(nameof(ComponentBinder.Key));
DirectionProperty = serializedObject.FindProperty(nameof(ComponentBinder.Direction));
UpdateTypeProperty = serializedObject.FindProperty(nameof(ComponentBinder.UpdateType));
@@ -30,7 +30,7 @@ public override void OnInspectorGUI()
{
serializedObject.Update();
- DrawContextKey(ContextKeyProperty);
+ DrawContainerKey(ContainerKeyProperty);
DrawDataKey(DataKeyProperty);
DrawDirection(DirectionProperty);
diff --git a/Editor/Script/TypeBinderEditor.cs b/Editor/Script/TypeBinderEditor.cs
index 4f4dd82..6aa505f 100644
--- a/Editor/Script/TypeBinderEditor.cs
+++ b/Editor/Script/TypeBinderEditor.cs
@@ -10,7 +10,7 @@ public class TypeBinderEditor : BaseBinderEditor
{
public TypeBinder TypeBinder => target as TypeBinder;
- protected SerializedProperty ContextKeyProperty;
+ protected SerializedProperty ContainerKeyProperty;
protected SerializedProperty DataKeyProperty;
protected SerializedProperty DirectionProperty;
protected SerializedProperty UpdateTypeProperty;
@@ -21,7 +21,7 @@ public class TypeBinderEditor : BaseBinderEditor
public virtual void OnEnable()
{
- ContextKeyProperty = serializedObject.FindProperty("Context");
+ ContainerKeyProperty = serializedObject.FindProperty("Container");
DataKeyProperty = serializedObject.FindProperty("Key");
DirectionProperty = serializedObject.FindProperty("Direction");
UpdateTypeProperty = serializedObject.FindProperty("UpdateType");
@@ -35,7 +35,7 @@ public override void OnInspectorGUI()
{
serializedObject.Update();
- DrawContextKey(ContextKeyProperty);
+ DrawContainerKey(ContainerKeyProperty);
DrawDataKey(DataKeyProperty);
DrawDirection(DirectionProperty);
diff --git a/Editor/Script/Util/EditorStyle.cs b/Editor/Script/Util/EditorStyle.cs
index 160e520..e239cf6 100644
--- a/Editor/Script/Util/EditorStyle.cs
+++ b/Editor/Script/Util/EditorStyle.cs
@@ -14,11 +14,9 @@ public static GUIStyle RichLabel
{
get
{
- if (_richLabel == null)
- {
- _richLabel = EditorStyles.label;
- _richLabel.richText = true;
- }
+ if (_richLabel != null) return _richLabel;
+ _richLabel = EditorStyles.label;
+ _richLabel.richText = true;
return _richLabel;
}
diff --git a/Editor/Script/Util/EditorUtil.cs b/Editor/Script/Util/EditorUtil.cs
index 703dfa6..200e1fb 100644
--- a/Editor/Script/Util/EditorUtil.cs
+++ b/Editor/Script/Util/EditorUtil.cs
@@ -17,8 +17,9 @@ public static SearchableDropdownItem CreateAssemblyMenu()
root.AddSeparator();
var assemblies = TypeCaches.Assemblies;
- foreach (var assembly in assemblies)
+ for (var i = 0; i < assemblies.Length; i++)
{
+ var assembly = assemblies[i];
var assemblyName = assembly.GetName().Name;
var child = new SearchableDropdownItem(assemblyName, assemblyName);
root.AddChild(child);
@@ -57,19 +58,18 @@ public static SearchableDropdownItem CreateTypeMenu(string assemblyName)
root.AddSeparator();
var assembly = TypeCaches.GetAssemblyByName(assemblyName);
- if (assembly != null)
+ if (assembly == null) return root;
+ var types = assembly.GetTypes();
+ for (var i = 0; i < types.Length; i++)
{
- var types = assembly.GetTypes();
- foreach (var type in types)
- {
- if (type.IsAbstract) continue;
- if (type.IsInterface) continue;
- if (type.IsGenericType) continue;
- if (type.IsEnum) continue;
+ var type = types[i];
+ if (type.IsAbstract) continue;
+ if (type.IsInterface) continue;
+ if (type.IsGenericType) continue;
+ if (type.IsEnum) continue;
- var child = new SearchableDropdownItem(type.Name, type.FullName);
- root.AddChild(child);
- }
+ var child = new SearchableDropdownItem(type.Name, type.FullName);
+ root.AddChild(child);
}
return root;
@@ -113,8 +113,9 @@ public static SearchableDropdownItem CreateComponentsTreeMenu(Transf
private static void CreateComponentsTreeMenuRecursion(SearchableDropdownItem root, Transform parent, string path) where TComponent : Component
{
var components = parent.GetComponents();
- foreach (var component in components)
+ for (var i = 0; i < components.Length; i++)
{
+ var component = components[i];
var componentName = component.GetType().Name;
var child = new SearchableDropdownItem(path + componentName, component)
{
@@ -192,8 +193,9 @@ public static GenericMenu CreatePropertyMenu(Type type, SerializedProperty prope
var propertyInfos = TypeCaches.GetTypeProperties(type);
var prefix = "Property/";
- foreach (var propertyInfo in propertyInfos)
+ for (var i = 0; i < propertyInfos.Count; i++)
{
+ var propertyInfo = propertyInfos[i];
// if (!TypeCaches.BindableTypes.Contains(propertyInfo.PropertyType)) continue;
var displayName = propertyInfo.Name + "\t\t" + propertyInfo.PropertyType.Name;
menu.AddItem(new GUIContent(prefix + displayName), propertyInfo.Name == property.stringValue, () =>
@@ -206,8 +208,9 @@ public static GenericMenu CreatePropertyMenu(Type type, SerializedProperty prope
var filedInfos = TypeCaches.GetTypeFields(type);
prefix = "Field/";
- foreach (var fieldInfo in filedInfos)
+ for (var i = 0; i < filedInfos.Count; i++)
{
+ var fieldInfo = filedInfos[i];
// if (!TypeCaches.BindableTypes.Contains(fieldInfo.FieldType)) continue;
var displayName = fieldInfo.Name + "\t\t" + fieldInfo.FieldType.Name;
menu.AddItem(new GUIContent(prefix + displayName), fieldInfo.Name == property.stringValue, () =>
@@ -236,12 +239,7 @@ public static void PropertyTreeMenu(string propertyName, Type type, SerializedPr
return (propertyInfo.Name, propertyInfo.PropertyType.Name);
}
- if (filedInfo != null)
- {
- return (filedInfo.Name, filedInfo.FieldType.Name);
- }
-
- return (EditorStyle.NoneStr, "");
+ return filedInfo != null ? (filedInfo.Name, filedInfo.FieldType.Name) : (EditorStyle.NoneStr, "");
}
var (currentPropertyName, currentPropertyTypeName) = GetCurrentPropertyInfo();
@@ -328,7 +326,52 @@ public static void ColorLine(Color color, float height)
GUILayout.EndVertical();
var rect = GUILayoutUtility.GetLastRect();
EditorGUI.DrawRect(rect, color);
- }
+ }
+
+ #endregion
+
+ #region Enum
+
+ public static void DrawToolbarEnum(SerializedProperty property, Type enumType)
+ {
+ DrawToolbarEnum(property, property.displayName, enumType);
+ }
+
+ public static void DrawToolbarEnum(SerializedProperty property, string propertyName, Type enumType)
+ {
+ property.intValue = DrawToolbarEnum(property.intValue, propertyName, enumType);
+ }
+
+ public static int DrawToolbarEnum(int value, string propertyName, Type enumType)
+ {
+ using (GUIHorizontal.Create())
+ {
+ GUILayout.Label(propertyName, EditorStyles.label, GUILayout.Width(EditorGUIUtility.labelWidth));
+ var buttons = Enum.GetNames(enumType);
+ var style = EditorStyles.miniButton;
+ style.margin = new RectOffset();
+ var rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight, style);
+ var btnWidth = rect.width / buttons.Length;
+ for (var i = 0; i < buttons.Length; i++)
+ {
+ var button = buttons[i];
+ var index = i;
+ var btnRect = rect;
+ btnRect.x += i * btnWidth;
+ btnRect.width = btnWidth;
+ using (GUIColorArea.Create(Color.white, Color.gray * 1.5f, value == index))
+ {
+ var btn = GUI.Button(btnRect, button, style);
+ if (btn)
+ {
+ return index;
+ }
+ }
+ }
+ }
+
+ return value;
+ }
#endregion
}
diff --git a/Editor/Script/Util/GUIStruct.cs b/Editor/Script/Util/GUIStruct.cs
index 2ca30e7..a3c771e 100644
--- a/Editor/Script/Util/GUIStruct.cs
+++ b/Editor/Script/Util/GUIStruct.cs
@@ -160,13 +160,44 @@ public static void SetState(Object target, string title, bool value)
public static Dictionary GetStateDic(Object target)
{
- if (!StateCacheDic.TryGetValue(target, out var stateDic))
+ if (StateCacheDic.TryGetValue(target, out var stateDic)) return stateDic;
+ stateDic = new Dictionary();
+ StateCacheDic.Add(target, stateDic);
+
+ return stateDic;
+ }
+ }
+
+ internal struct GUIColorArea : IDisposable
+ {
+ public Color OriginalColor;
+
+ public static GUIColorArea Create(Color color, bool check = true)
+ {
+ return new GUIColorArea(color, Color.white, check);
+ }
+
+ public static GUIColorArea Create(Color enableColor, Color disableColor, bool check = true)
+ {
+ return new GUIColorArea(enableColor, disableColor, check);
+ }
+
+ public GUIColorArea(Color enableColor, Color disableColor, bool check = true)
+ {
+ OriginalColor = GUI.color;
+ if (check)
+ {
+ GUI.color = enableColor;
+ }
+ else
{
- stateDic = new Dictionary();
- StateCacheDic.Add(target, stateDic);
+ GUI.color = disableColor;
}
+ }
- return stateDic;
+ public void Dispose()
+ {
+ GUI.color = OriginalColor;
}
}
}
diff --git a/Extension.meta b/Extension.meta
index 2bff7c7..59c8726 100644
--- a/Extension.meta
+++ b/Extension.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 16a3d1bb53850d74dae9d7d04ab414df
+guid: 207507ed0e2b6c54b9f611daf05c40ed
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Extension/TextMeshPro/Script/TMPTextFormatValueBinder.cs b/Extension/TextMeshPro/Script/TMPTextFormatValueBinder.cs
index 9529539..48fffe4 100644
--- a/Extension/TextMeshPro/Script/TMPTextFormatValueBinder.cs
+++ b/Extension/TextMeshPro/Script/TMPTextFormatValueBinder.cs
@@ -17,7 +17,7 @@ public override RuntimeTMPTextFormatValueBinder CreateDataBinder()
var dataBinder = new RuntimeTMPTextFormatValueBinder
{
Target = Target,
- Context = Context,
+ Container = Container,
Direction = Direction,
Key = Key,
Text = Text
diff --git a/Runtime/Script/Attribute/BindAttribute.cs b/Runtime/Script/Attribute/BindAttribute.cs
index e708f18..ff96344 100644
--- a/Runtime/Script/Attribute/BindAttribute.cs
+++ b/Runtime/Script/Attribute/BindAttribute.cs
@@ -5,7 +5,7 @@ namespace Aya.DataBinding
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
public abstract class BindAttribute : Attribute
{
- public string Context = DataContext.Default;
+ public string Container = DataContainer.Default;
public string Key;
public DataDirection Direction;
@@ -15,9 +15,9 @@ protected BindAttribute(string dataKey, DataDirection direction)
Direction = direction;
}
- protected BindAttribute(string contextKey, string dataKey, DataDirection direction)
+ protected BindAttribute(string containerKey, string dataKey, DataDirection direction)
{
- Context = contextKey;
+ Container = containerKey;
Key = dataKey;
Direction = direction;
}
diff --git a/Runtime/Script/Attribute/BindTypeAttribute.cs b/Runtime/Script/Attribute/BindTypeAttribute.cs
index 4736804..13cb457 100644
--- a/Runtime/Script/Attribute/BindTypeAttribute.cs
+++ b/Runtime/Script/Attribute/BindTypeAttribute.cs
@@ -9,7 +9,7 @@ public BindTypeAttribute(string dataKey, DataDirection direction) : base(dataKey
{
}
- public BindTypeAttribute(string contextKey, string dataKey, DataDirection direction) : base(contextKey, dataKey, direction)
+ public BindTypeAttribute(string containerKey, string dataKey, DataDirection direction) : base(containerKey, dataKey, direction)
{
}
}
diff --git a/Runtime/Script/Attribute/BindTypeSourceAttribute.cs b/Runtime/Script/Attribute/BindTypeSourceAttribute.cs
index 593235e..85b42ab 100644
--- a/Runtime/Script/Attribute/BindTypeSourceAttribute.cs
+++ b/Runtime/Script/Attribute/BindTypeSourceAttribute.cs
@@ -9,7 +9,7 @@ public BindTypeBothAttribute(string dataKey) : base(dataKey, DataDirection.Both)
{
}
- public BindTypeBothAttribute(string contextKey, string dataKey) : base(contextKey, dataKey, DataDirection.Both)
+ public BindTypeBothAttribute(string containerKey, string dataKey) : base(containerKey, dataKey, DataDirection.Both)
{
}
}
diff --git a/Runtime/Script/Bindable/BindableMonoBehaviour.cs b/Runtime/Script/Bindable/BindableMonoBehaviour.cs
index b0bade7..5bc5fc9 100644
--- a/Runtime/Script/Bindable/BindableMonoBehaviour.cs
+++ b/Runtime/Script/Bindable/BindableMonoBehaviour.cs
@@ -18,12 +18,12 @@ public BindMap BindMap
public virtual void OnEnable()
{
- BindMap.Bind(this);
+ UBind.RegisterMap(this);
}
public virtual void OnDisable()
{
- BindMap.UnBind(this);
+ UBind.DeRegisterMap(this);
}
}
}
diff --git a/Runtime/Script/Bindable/BindableObject.cs b/Runtime/Script/Bindable/BindableObject.cs
index 4e28305..4b36394 100644
--- a/Runtime/Script/Bindable/BindableObject.cs
+++ b/Runtime/Script/Bindable/BindableObject.cs
@@ -17,12 +17,12 @@ public BindMap BindMap
protected BindableObject()
{
- BindMap.Bind(this);
+ UBind.RegisterMap(this);
}
~BindableObject()
{
- BindMap.UnBind(this);
+ UBind.DeRegisterMap(this);
}
}
}
diff --git a/Runtime/Script/Binder/RuntimePropertyBinder.cs b/Runtime/Script/Binder/RuntimePropertyBinder.cs
index 578f39c..207acbd 100644
--- a/Runtime/Script/Binder/RuntimePropertyBinder.cs
+++ b/Runtime/Script/Binder/RuntimePropertyBinder.cs
@@ -9,9 +9,9 @@ public class RuntimePropertyBinder : RuntimePropertyBinder