public void resetActionUnitPos(ActionRoleData unit)
 {
     if (unit.isEnemy)
     {
         unit.transform.position = startEnemyPos.position;
         if (SDGameManager.Instance.isFastModeEnabled)
         {
             unit.isActed = false;
         }
     }
     else
     {
         unit.transform.position = startHeroPos.position;
         if (SDGameManager.Instance.isFastModeEnabled)
         {
             unit.isActed = false;
         }
     }
 }
    //关卡开始时初始化所有行动单元,赋予速度
    public void initAction(List <BattleRoleData> allUnits)
    {
        stopAction();
        foreach (Transform t in actionUnitParent)
        {
            Destroy(t.gameObject);
        }
        //
        standardSpeedArray = new int[allUnits.Count];
        allActionUnits     = new List <ActionRoleData>();
        for (int i = 0; i < allUnits.Count; i++)
        {
            BattleRoleData BUnit      = allUnits[i];
            Transform      actionUnit = Instantiate(actionUnitPrefab) as Transform;
            actionUnit.SetParent(actionUnitParent);
            actionUnit.GetComponent <ActionRoleData>().nameText.text = BUnit.name;
            ActionRoleData unit = actionUnit.GetComponent <ActionRoleData>();
            //
            int speed = BUnit.ThisBasicRoleProperty()._role.ReadCurrentRoleRA(AttributeData.Speed);
            standardSpeedArray[i] = speed;
            unit.speed            = speed;
            //
            //actionUnit.GetComponent<Canvas>().sortingOrder = i;
            if (BUnit._Tag == SDConstants.CharacterType.Enemy)
            {
                actionUnit.position = startEnemyPos.position;
                unit.isEnemy        = true;
                if (BUnit.IsBoss)
                {
                    unit.headImage.initCharacterModelById
                        (BUnit.UnitId, SDConstants.CharacterAnimType.Enemy, 0.15f, true);
                }
                else
                {
                    unit.headImage.initCharacterModelById
                        (BUnit.UnitId, SDConstants.CharacterAnimType.Enemy, 0.3f, true);
                }
            }
            else
            {
                actionUnit.position = startHeroPos.position;
                unit.isEnemy        = false;
                int    hashcode = BUnit.unitHashcode;
                string heroId   = SDDataManager.Instance.getHeroIdByHashcode(hashcode);
                SDConstants.CharacterAnimType type
                    = (SDConstants.CharacterAnimType)
                          (SDDataManager.Instance.getHeroCareerById(heroId));
                //unit.headImage.initCharacterModel(hashcode, type, 3f);
            }
            actionUnit.localScale = Vector3.one;
            if (BUnit.ReadThisStateEnable(StateTag.Dizzy))
            {
                unit.stateBgImage.sprite = unit.stateSprites[1];
            }
            else
            {
                unit.stateBgImage.sprite = unit.stateSprites[0];
            }
            unit.battleUnit = BUnit;
            unit.isActed    = false;
            allActionUnits.Add(unit);
            if (BUnit.IsDead)
            {
                actionUnit.gameObject.SetActive(false);
            }
        }

        BuildABMoveSpeed(allActionUnits);
        //BM.NextActionUnit();
        startAction();
    }
    void FixedUpdate()
    {
        if (IsWaitingAction || allActionUnits == null || SDGameManager.Instance.isGamePaused)
        {
            return;
        }
        for (int i = 0; i < allActionUnits.Count; i++)
        {
            if (!allActionUnits[i].isActed)
            {
                if (allActionUnits[i].transform.position.x < endPos.position.x)
                {
                    allActionUnits[i].transform.position
                        += Vector3.right * ActionBarSpeedFix
                           * allActionUnits[i].speed * Time.deltaTime;
                }
                if (allActionUnits[i].transform.position.x >= endPos.position.x)
                {
                    if (allActionUnits[i].battleUnit.IsDead)
                    {
                        allActionUnits[i].isActed = true;
                        if (allActionUnits[i].battleUnit != null)
                        {
                            Debug.Log("该角色" + allActionUnits[i].battleUnit.name + " 状态为死亡");
                        }
                        resetActionUnitPos(allActionUnits[i]);
                    }
                    else
                    {
                        if (allActionUnits[i].battleUnit.ReadThisStateEnable(StateTag.Dizzy))
                        {
                            allActionUnits[i].isActed = true;
                            resetActionUnitPos(allActionUnits[i]);
                            BM.ShowNextActionUnit();
                        }
                        else
                        {
                            stopAction();
                            CurrentActionUnit         = allActionUnits[i];
                            allActionUnits[i].isActed = true;
                            Debug.Log("当前行动单位 name: " + CurrentActionUnit.battleUnit.name);
                            BM.ShowNextActionUnit();

                            if (!SDGameManager.Instance.isFastModeEnabled)
                            {
                                if (i == allActionUnits.Count - 1)
                                {
                                    resetAction();
                                }
                            }
                            break;
                        }
                    }
                    //一回合结束
                    if (i == allActionUnits.Count - 1)
                    {
                        resetAction();
                        WhenOneRoundFinish();
                        //
                        BM.whenOneRoundStart();
                    }
                }
            }
        }
    }