コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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 ();
        }