// 检测行为是否有效
    // @actionData:行为数据
    // return:有效返回true;否则false
    private bool CheckActionIsValid(SkillActionData actionData)
    {
        if (!m_dicActNum.ContainsKey(actionData.i) || m_dicActNum[actionData.i] != 1)
        {
            return(false);
        }

        for (int i = 0; i < actionData.aH.Length; ++i)
        {
            int harmId = actionData.aH[i];
            if (!CheckHurmIsValid(harmId))
            {
                return(false);
            }
        }

        // 触发行为判断
        if (actionData.tA == 0)
        {
            // 自己触发自己
            for (int i = 0; i < actionData.aT.Length; ++i)
            {
                // 先判断触发id是否正确
                SkillTriggerData tData = actionData.aT[i];
                if (!m_dicActNum.ContainsKey(tData.i) || m_dicActNum[tData.i] != 1 || tData.i == actionData.i)
                {
                    return(false);
                }

                for (int j = 0; j < m_skillData.aA.Length; ++j)
                {
                    // 触发的行为不是触发行为
                    SkillActionData aData = m_skillData.aA[j];
                    if (aData.i == tData.i && aData.tA != 1)
                    {
                        return(false);
                    }
                }
            }
        }

        return(true);
    }
    // 绘制行为图标
    // @actionData:行为数据
    private void DrawActionItem(SkillActionData actionData)
    {
        if (CheckActionIsValid(actionData))
        {
            if (actionData.tA == 1)
            {
                GUI.backgroundColor = new Color32(255, 175, 0, 255);
            }
            else
            {
                GUI.backgroundColor = Color.green;
            }
        }
        else
        {
            GUI.backgroundColor = Color.red;
        }

        GUILayout.BeginVertical(new GUIStyle(EditorStyles.textField), GUILayout.Width(MENU_WIDTH - 20), GUILayout.ExpandHeight(true));
        GUI.backgroundColor = m_defaultBgClr;

        GUILayout.BeginHorizontal();
        GUILayout.Label("行为id:", GUILayout.Width(75));
        actionData.i = (int)EditorGUILayout.IntField(actionData.i, GUILayout.Width(100));
        //GUILayout.FlexibleSpace();

        if (GUILayout.Button("-", GUILayout.Width(20)))
        {
            List <SkillActionData> listAction = new List <SkillActionData>(m_skillData.aA);
            listAction.Remove(actionData);

            m_skillData.aA = listAction.ToArray();
        }

        GUILayout.EndHorizontal();


        GUILayout.BeginHorizontal();
        GUILayout.Label("行为类型:", GUILayout.Width(75));
        actionData.a = (int)EditorGUILayout.Popup(actionData.a, ARR_ACTION_TYPE_NAME, GUILayout.Width(100));
        //GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        bool isTrigger = actionData.tA == 1;

        if (!isTrigger)
        {
            GUILayout.Label("行为播放时间:", GUILayout.Width(75));
            actionData.t = EditorGUILayout.FloatField(actionData.t, GUILayout.Width(100));
        }
        GUILayout.Label("触发行为:", GUILayout.Width(75));
        isTrigger     = EditorGUILayout.Toggle(isTrigger, GUILayout.Width(40));
        actionData.tA = isTrigger ? 1 : 0;
        GUILayout.EndHorizontal();

        if (actionData.a == (int)SkillActionType.PLAY_EFFECT || actionData.a == (int)SkillActionType.PLAY_EFFECT_SELF) // 播放特效
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("特效ID:", GUILayout.Width(75));
            actionData.e1 = EditorGUILayout.IntField(actionData.e1, GUILayout.Width(100));

            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("坐标X:", GUILayout.Width(75));
            actionData.x = EditorGUILayout.IntField(actionData.x, GUILayout.Width(100));
            GUILayout.Label("坐标Y:", GUILayout.Width(75));
            actionData.y = EditorGUILayout.IntField(actionData.y, GUILayout.Width(100));
            GUILayout.EndHorizontal();
        }
        else if (actionData.a == (int)SkillActionType.CRASH_TARGET) // 冲向目标
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("移动速度:", GUILayout.Width(75));
            actionData.s = EditorGUILayout.IntField(actionData.s, GUILayout.Width(100));
            GUILayout.Label("限制移动时间:", GUILayout.Width(75));
            bool limitMove = actionData.l2 == 1;
            limitMove     = EditorGUILayout.Toggle(limitMove, GUILayout.Width(40));
            actionData.l2 = limitMove ? 1 : 0;
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("前排特效ID:", GUILayout.Width(75));
            actionData.e1 = EditorGUILayout.IntField(actionData.e1, GUILayout.Width(100));
            GUILayout.Label("后排特效ID:", GUILayout.Width(75));
            actionData.e2 = EditorGUILayout.IntField(actionData.e2, GUILayout.Width(100));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("特效锁目标:", GUILayout.Width(75));
            bool lookTarget = actionData.l == 1;
            lookTarget   = EditorGUILayout.Toggle(lookTarget, GUILayout.Width(40));
            actionData.l = lookTarget ? 1 : 0;
            GUILayout.EndHorizontal();
        }
        //else if (actionData.a == (int)SkillActionType.CRASH_POS) // 冲向位置
        //{
        //    GUILayout.BeginHorizontal();
        //    GUILayout.Label("坐标X:", GUILayout.Width(55));
        //    actionData.x = EditorGUILayout.IntField(actionData.x, GUILayout.Width(100));
        //    GUILayout.Label("坐标Y:", GUILayout.Width(55));
        //    actionData.y = EditorGUILayout.IntField(actionData.y, GUILayout.Width(100));
        //    GUILayout.EndHorizontal();
        //}
        else if (actionData.a == (int)SkillActionType.SHOOT_BULLET) // 发射子弹
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("子弹速度:", GUILayout.Width(75));
            actionData.s = EditorGUILayout.IntField(actionData.s, GUILayout.Width(100));
            GUILayout.Label("限制移动时间:", GUILayout.Width(75));
            bool limitMove = actionData.l2 == 1;
            limitMove     = EditorGUILayout.Toggle(limitMove, GUILayout.Width(40));
            actionData.l2 = limitMove ? 1 : 0;
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("前排特效ID:", GUILayout.Width(75));
            actionData.e1 = EditorGUILayout.IntField(actionData.e1, GUILayout.Width(100));
            GUILayout.Label("后排特效ID:", GUILayout.Width(75));
            actionData.e2 = EditorGUILayout.IntField(actionData.e2, GUILayout.Width(100));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("发射点偏移X:", GUILayout.Width(75));
            actionData.x = EditorGUILayout.IntField(actionData.x, GUILayout.Width(100));
            GUILayout.Label("发射点偏移Y:", GUILayout.Width(75));
            actionData.y = EditorGUILayout.IntField(actionData.y, GUILayout.Width(100));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("特效锁目标:", GUILayout.Width(75));
            bool lookTarget = actionData.l == 1;
            lookTarget   = EditorGUILayout.Toggle(lookTarget, GUILayout.Width(40));
            actionData.l = lookTarget ? 1 : 0;
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("子弹时间1-3:", GUILayout.Width(75));
            for (int i = 0; i < 3; ++i)
            {
                actionData.aB[i] = EditorGUILayout.FloatField(actionData.aB[i], GUILayout.Width(60));
            }

            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("子弹时间4-6:", GUILayout.Width(75));
            for (int i = 3; i < 6; ++i)
            {
                actionData.aB[i] = EditorGUILayout.FloatField(actionData.aB[i], GUILayout.Width(60));
            }

            GUILayout.EndHorizontal();
        }
        else if (actionData.a == (int)SkillActionType.SHOOT_BULLET) // 敌人特效
        {
        }
        else if (actionData.a == (int)SkillActionType.PLAY_EFFECT_LINK) // 链特效
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("链特效ID:", GUILayout.Width(75));
            actionData.e1 = EditorGUILayout.IntField(actionData.e1, GUILayout.Width(100));
            GUILayout.EndHorizontal();
        }

        // 伤害集合
        GUILayout.BeginVertical();
        for (int i = 0; i < actionData.aH.Length; ++i)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("伤害id:", GUILayout.Width(75));
            actionData.aH[i] = EditorGUILayout.IntField(actionData.aH[i], GUILayout.Width(100));

            if (GUILayout.Button("-", GUILayout.Width(20)))
            {
                List <int> listId = new List <int>(actionData.aH);
                listId.RemoveAt(i);
                actionData.aH = listId.ToArray();
                break;
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }

        GUILayout.EndVertical();

        // 触发集合
        GUILayout.BeginVertical();
        for (int i = 0; i < actionData.aT.Length; ++i)
        {
            SkillTriggerData triData = actionData.aT[i];

            GUILayout.BeginHorizontal();
            GUILayout.Label("触发id:", GUILayout.Width(75));
            triData.i = EditorGUILayout.IntField(triData.i, GUILayout.Width(60));
            GUILayout.Label("触发时间:", GUILayout.Width(50));
            triData.t = EditorGUILayout.FloatField(triData.t, GUILayout.Width(60));

            if (GUILayout.Button("-", GUILayout.Width(20)))
            {
                List <SkillTriggerData> listData = new List <SkillTriggerData>(actionData.aT);
                listData.RemoveAt(i);
                actionData.aT = listData.ToArray();
                break;
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }

        GUILayout.EndVertical();

        GUILayout.BeginHorizontal();

        // +按钮
        if (GUILayout.Button("绑定伤害", GUILayout.Height(20), GUILayout.Width(150)))
        {
            List <int> listId = new List <int>(actionData.aH);
            listId.Add(0);

            actionData.aH = listId.ToArray();
        }

        if (GUILayout.Button("绑定触发", GUILayout.Height(20), GUILayout.Width(150)))
        {
            List <SkillTriggerData> listData = new List <SkillTriggerData>(actionData.aT);
            listData.Add(new SkillTriggerData());

            actionData.aT = listData.ToArray();
        }

        GUILayout.EndHorizontal();

        GUILayout.EndVertical();
    }