public static void BindableObjectField(BindableObject target, int index) { if (target == null) { return; } int key = target.GetHashCode(); string propertyName; dicPropertyName.TryGetValue(key, out propertyName); EditorGUILayout.Separator(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); var temp = target as BindableObject; GUILayout.Label(target.name, GUILayout.Width(100)); EditorGUILayout.ObjectField(temp, typeof(BindableObject), false, GUILayout.MaxWidth(150)); //显示绑定对象 int selectedIndex = PopupComponentsProperty(temp, propertyName, GUILayout.MaxWidth(150)); //绑定属性 propertyName = GetSelectedPropertyByIndex(selectedIndex); dicPropertyName[key] = propertyName; if (GUILayout.Button("+", GUILayout.MaxWidth(50))) { if (selectedIndex == 0) { Debug.LogWarningFormat("please choose a property to binding"); return; } if (temp.bindings == null) { temp.bindings = new List <Binding>(); } Binding expression = new Binding(); expression.propertyName = propertyName; temp.bindings.Add(expression); } Undo.RecordObject(target, "F"); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); if (temp.bindings != null) { for (int i = 0; i < temp.bindings.Count; i++) { EditorGUILayout.BeginHorizontal(); var binding = temp.bindings[i]; BindableExpressionEditor.Expression(binding, i); if (GUILayout.Button("-", GUILayout.Width(30))) { RemoveAtbindableObjects(temp, i); } EditorGUILayout.EndHorizontal(); } } }
public static void BindableObjectField(BindableObject target, int index) { if (target == null) { return; } int key = target.GetHashCode(); string propertyName; dicPropertyName.TryGetValue(key, out propertyName); EditorGUILayout.Separator(); // EditorGUILayout.LabelField ("B List", GUILayout.Width (200)); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); var temp = target as BindableObject; GUILayout.Label(target.name, GUILayout.Width(100)); EditorGUILayout.ObjectField(temp, typeof(BindableObject), GUILayout.MaxWidth(150)); //显示绑定对象 int selectedIndex = PopupComponentsProperty(temp, propertyName, GUILayout.MaxWidth(150)); //绑定属性 propertyName = GetSelectedPropertyByIndex(selectedIndex); dicPropertyName[key] = propertyName; if (GUILayout.Button("+", GUILayout.MaxWidth(50))) { if (selectedIndex == 0) { Debug.LogWarningFormat("please choose a property to binding"); return; } if (temp.bindings == null) { temp.bindings = new List <Binding> (); } Binding expression = new Binding(); expression.propertyName = propertyName; temp.bindings.Add(expression); } Undo.RecordObject(target, "F"); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); UnityEngine.Object objComponent; if (temp.bindings != null) { for (int i = 0; i < temp.bindings.Count; i++) { EditorGUILayout.BeginHorizontal(); var binding = temp.bindings[i]; BindableExpression.Expression(binding, temp.targetName, i); // GUILayout.Label ((i + 1).ToString (), GUILayout.Width (20)); // // objComponent = temp.children[i]; // // objComponent = PopupGameObjectComponents (GetbindableObjects (temp, i).target, i); //选择绑定的component type类型 // // if (objComponent != null) AddbindableObjects (temp, i, objComponent); //绑定选中的类型 // // //显示选中的对象 // // AddbindableObjects (temp, i, EditorGUILayout.ObjectField (GetbindableObjects (temp, i).target, typeof (UnityEngine.Object), true, GUILayout.MaxWidth (80))); // // //选择可绑定属性 // PopupComponentsProperty (temp, i); if (GUILayout.Button("-", GUILayout.Width(30))) { RemoveAtbindableObjects(temp, i); } EditorGUILayout.EndHorizontal(); // //设置binding属性 // // SetBindingProperties (temp, i); // EditorGUILayout.Space (); } } // EditorGUILayout.Space (); // EditorGUILayout.BeginHorizontal (); // EditorGUILayout.Space (); }