public override void OnInspectorGUI() { pageArgsHolder = ((PageArgsHolder)serializedObject.targetObject).pageArgs; EditorGUI.BeginChangeCheck(); pageArgsHolder.PageToCreate = (PagesEnum)EditorGUILayout.EnumPopup("Page To Create: ", pageArgsHolder.PageToCreate); if (EditorGUI.EndChangeCheck()) { pageArgsHolder.ArgumentList.Clear(); pageArgsHolder.ArgumentList = new List <PageArgs.ArgItemHolder> (PageNavEditorWindow.Settings.PagesCustomArguments[(int)pageArgsHolder.PageToCreate - 1].ArgumentList); } argumentsListFoldout = EditorGUILayout.Foldout(argumentsListFoldout, "Arguments List:"); int removeIndex = -1; tempList = new List <PageArgs.ArgItemHolder> (pageArgsHolder.ArgumentList); if (argumentsListFoldout && pageArgsHolder.PageToCreate != PagesEnum.None) { for (int index = 0; index < pageArgsHolder.ArgumentList.Count; index++) { removeIndex = DrawArgItem(pageArgsHolder.ArgumentList[index], index); if (removeIndex >= 0) { tempList.Remove(pageArgsHolder.ArgumentList[index]); } } if (GUILayout.Button("Add Argument")) { var lala = new PageArgs.ArgItemHolder(); lala.name = "Argument " + pageArgsHolder.ArgumentList.Count; tempList.Add(lala); } pageArgsHolder.ArgumentList = tempList; } }
private int DrawArgItem(PageArgs.ArgItemHolder argItem, int index) { int returnIndex = -1; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginVertical("box"); EditorGUILayout.BeginHorizontal(); argItem.name = EditorGUILayout.TextField(argItem.name); if (GUILayout.Button("Remove")) { tempList.Remove(argItem); } EditorGUILayout.EndHorizontal(); argItem.type = (PageArgs.PageArgType)EditorGUILayout.EnumPopup("Type", argItem.type); switch (argItem.type) { case PageArgs.PageArgType.objectType: argItem.objectValue = (UnityEngine.Object)EditorGUILayout.ObjectField("Value", argItem.objectValue, typeof(UnityEngine.Object), true); break; case PageArgs.PageArgType.intType: argItem.intValue = EditorGUILayout.IntField("Value", argItem.intValue); break; case PageArgs.PageArgType.stringType: argItem.stringValue = EditorGUILayout.TextField("Value", argItem.stringValue); break; case PageArgs.PageArgType.boolType: argItem.boolValue = EditorGUILayout.Toggle("Value", argItem.boolValue); break; } EditorGUILayout.EndVertical(); return(returnIndex); }