void DrawProperties(string heroExc, string heroProperty, string actionProperty) { GUILayout.BeginHorizontal(); { if (GUILayout.Button("Import", GUILayout.Width(150), GUILayout.Height(30))) { if (heroExc.Equals("heroExcType")) { _actionMaker.LoadActionType(true); } else { _actionMaker.LoadActionType(false); } } if (GUILayout.Button("Export", GUILayout.Width(150), GUILayout.Height(30))) { if (heroExc.Equals("heroExcType")) { _actionMaker.ExportText(true); } else { _actionMaker.ExportText(false); } } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); { SerializedProperty sp = serializedObject.FindProperty(heroExc); EditorGUILayout.PropertyField(sp, new GUIContent("ActionType")); } GUILayout.EndHorizontal(); GUILayout.Space(10); GUILayout.BeginHorizontal(); { if (PrefabUtility.GetPrefabType(target) == PrefabType.Prefab) { return; } SerializedProperty sp = serializedObject.FindProperty(heroProperty); EditorGUILayout.PropertyField(sp, new GUIContent("Hero")); } GUILayout.EndHorizontal(); GUILayout.Space(5); bool showChildren = true; var myIterator = serializedObject.FindProperty(actionProperty); CommendType currentCommend = CommendType.AnimationDelay; while (myIterator.NextVisible(showChildren)) { // NextVisible() 함수는 serializedObject.FindProperty(actionProperty) 와 // 상관없이 모든 ActionMaker의 변수를 뒤진다. // 때문에 여기서 그려질 필요가 없는 건 넘겨준다. if (myIterator.name.Equals("heroExcType") || myIterator.name.Equals("enmeyExcType") || myIterator.name.Equals("Loop") || myIterator.name.Equals("heroActionData") || myIterator.name.Equals("enemyActionData") || myIterator.name.Equals("myHero") || myIterator.name.Equals("enemyHero")) { continue; } var myRect = GUILayoutUtility.GetRect(0f, 16f); showChildren = EditorGUI.PropertyField(myRect, myIterator); if (myIterator.name.Equals("commend")) { currentCommend = (CommendType)myIterator.enumValueIndex; } else if (myIterator.name.Equals("duration")) { if (currentCommend == CommendType.AnimationDelay || currentCommend == CommendType.FadeOut) { EditorGUI.BeginDisabledGroup(true); } else { EditorGUI.EndDisabledGroup(); } } else { EditorGUI.EndDisabledGroup(); } } }