/// <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); }
/// <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); }
/// <summary> /// 入力フィールドロジックの登録 (1行) /// </summary> private static void RegisterInputFieldAction(Type type, Func <object, object> func) { InputFieldActionDict.Add(type, func); }