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));
        }
    }
Пример #2
0
    void SelectFSM()
    {
        GUILayout.Space(30);

        curFSMID          = (FSM_ID)EditorGUILayout.EnumPopup(curFSMID);
        curStatePopupList = FSM_Utility.GetPopupList(curFSMID);

        if (GUI.changed)
        {
            LoadFSM();
        }

        GUILayout.Space(30);
    }