private void SetReaction(SerializedProperty targetSP, string label) { targetSP.arraySize = EditorGUILayout.IntField(label, targetSP.arraySize); for (int idx = 0; idx < targetSP.arraySize; idx++) { SerializedProperty sp = targetSP.GetArrayElementAtIndex(idx); SerializedProperty layer = sp.FindPropertyRelative("layer"); SerializedProperty fsm = sp.FindPropertyRelative("fsm"); SerializedProperty state = sp.FindPropertyRelative("state"); EditorGUILayout.BeginHorizontal(); layer.enumValueIndex = (int)(FSM_LAYER_ID)EditorGUILayout.EnumPopup((FSM_LAYER_ID)layer.enumValueIndex); fsm.enumValueIndex = (int)(FSM_ID)EditorGUILayout.EnumPopup((FSM_ID)fsm.enumValueIndex); StatePopupList p = FSM_Utility.GetPopupList((FSM_ID)fsm.enumValueIndex); state.intValue = EditorGUILayout.IntPopup(state.intValue, p.arr_sName, p.arr_nID); EditorGUILayout.EndHorizontal(); SetReactionRow(ref sp, "startBefore", "onStartBefore", "onStartBeforeExcuteId"); SetReactionRow(ref sp, "Start", "onStart", "onStartExcuteId"); SetReactionRow(ref sp, "StartAfter1", "onStartAfter1", "onStartAfter1ExcuteId"); SetReactionRow(ref sp, "StartAfter2", "onStartAfter2", "onStartAfter2ExcuteId"); SetReactionRow(ref sp, "EndBefore", "onEndBefore", "onEndBeforeExcuteId"); SetReactionRow(ref sp, "End", "onEnd", "onEndExcuteId"); SetReactionRow(ref sp, "EndAfter", "onEndAfter", "onEndAfterExcuteId"); SetReactionRow(ref sp, "Pause", "onPause", "onPauseExcuteId"); SetReactionRow(ref sp, "Resume", "onResume", "onResumeExcuteId"); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); } }
void SelectFSM() { GUILayout.Space(30); curFSMID = (FSM_ID)EditorGUILayout.EnumPopup(curFSMID); curStatePopupList = FSM_Utility.GetPopupList(curFSMID); if (GUI.changed) { LoadFSM(); } GUILayout.Space(30); }