Пример #1
0
        /// <summary>
        /// 入力フィールドの表示
        /// </summary>
        private static object InputFieldInternal(Type type, object _object)
        {
            if (InputFieldActionDict.ContainsKey(type))
            {
                return(InputFieldActionDict[type].Invoke(_object));
            }
            // UnityEngine.Object
            if (type.IsSubclassOf(typeof(UnityEngine.Object)))
            {
                return(InputFieldActionDict[typeof(UnityEngine.Object)].Invoke(_object));
            }

            // Enum
            if (type.IsEnum)
            {
                return(EditorGUILayout.EnumPopup((Enum)_object, InputFieldOptions));
            }

            // Unregistered Types
            EditorGUILayout.LabelField("not supported");
            return(null);
        }
Пример #2
0
        /// <summary>
        /// 入力フィールドの表示
        /// </summary>
        public static object InputField(string name, Type type, object _object)
        {
            object result = null;

            if (MultiLineInputFieldActionDict.ContainsKey(type))
            {
                result = MultiLineInputFieldActionDict[type].Invoke(name, _object);
            }
            else
            if (InputFieldActionDict.ContainsKey(type))
            {
                EditorGUILayout.BeginHorizontal();

                EditorGUILayout.SelectableLabel(name, GUILayout.Width(LabelWidth), GUILayout.Height(LabelHeight));

                result = InputFieldInternal(type, _object);

                GUILayout.Space(12f);
                EditorGUILayout.EndHorizontal();
            }

            return(result);
        }
Пример #3
0
 /// <summary>
 /// 入力フィールドロジックの登録 (1行)
 /// </summary>
 private static void RegisterInputFieldAction(Type type, Func <object, object> func)
 {
     InputFieldActionDict.Add(type, func);
 }