예제 #1
0
        public static Component SelectComponentField <T>(Rect postion, Component c, string title) where T : Component
        {
            Rect r2;
            Rect r1   = Layout.Divide.Golden(postion, out r2);
            Rect r2_1 = Layout.Divide.FirstRect(r2, 2);
            Rect r2_2 = Layout.Divide.NextRect(r2_1);

            EditorGUI.LabelField(r1, title);
            EditorGUI.BeginChangeCheck();
            var g = EditorGUI.ObjectField(r2_1, c ? c.gameObject : null, typeof(GameObject), true) as GameObject;

            if (EditorGUI.EndChangeCheck())
            {
                if (g)
                {
                    SelectComponentWindow.Show <T>(g, c.GetInstanceID().ToString());
                }
            }
            EditorGUI.LabelField(r2_2, c ? c.GetType().Name : "Null");
            if (SelectComponentWindow.CanPick(c.GetInstanceID().ToString()))
            {
                return(SelectComponentWindow.GetPick());
            }
            else
            {
                return(c);
            }
        }
예제 #2
0
 protected override void OnDraw(Rect position, SerializedProperty property, GUIContent label)
 {
     if (property.propertyType == SerializedPropertyType.String)
     {
         var  go     = (property.serializedObject.targetObject as Component).gameObject;
         Rect newpos = position.WidthNew(position.width - 16f * 3f);
         Rect r1     = new Rect(newpos.xMax, newpos.y, 16f * 3, newpos.height);
         if (GUI.Button(r1, "Select"))
         {
             SelectComponentWindow.Show <Component>(go, property.propertyPath);
         }
         if (SelectComponentWindow.CanPick(property.propertyPath))
         {
             var com = SelectComponentWindow.GetPick();
             if (com)
             {
                 property.stringValue = com.GetType().Name;
             }
             else
             {
                 property.stringValue = "";
             }
             property.serializedObject.ApplyModifiedProperties();
         }
         EditorGUI.PropertyField(newpos, property, label);
     }
     else
     {
         base.OnDraw(position, property, label);
     }
 }
예제 #3
0
        public static Component SelectComponentField <T>(Component c, string title, params GUILayoutOption[] options) where T : Component
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginChangeCheck();
            var go = EditorGUILayout.ObjectField(c ? c.gameObject : null, typeof(GameObject), true, options) as GameObject;

            if (EditorGUI.EndChangeCheck())
            {
                if (go)
                {
                    SelectComponentWindow.Show <T>(go, c.GetInstanceID().ToString());
                }
            }
            EditorGUILayout.LabelField(c ? c.GetType().Name : "Null");
            EditorGUILayout.EndHorizontal();
            if (SelectComponentWindow.CanPick(c.GetInstanceID().ToString()))
            {
                return(SelectComponentWindow.GetPick());
            }
            else
            {
                return(c);
            }
        }