private IEnumerator doNextAction()
        {
            // 如果当前状态下船上有人,就先让人下船
            int temp = 0;

            for (int i = 0; i < 2; i++)
            {
                if (BoatAndCreature[i] != null)
                {
                    temp++;
                }
            }
            if (temp != 0)
            {
                GoOffBoard(0);
                GoOffBoard(1);
                yield return(new WaitForSeconds(1.2f));
            }

            // 首先判断当前的情况,处于什么状态,得出下一步的动作是什么
            NEXT_ACTION nextAction = getNextAction();

            if (SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                if (nextAction == NEXT_ACTION.P)
                {
                    leftShorePriestGoOnBoat(priestOnLeftshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.PP)
                {
                    leftShorePriestGoOnBoat(priestOnLeftshore.ToArray()[0].name);
                    leftShorePriestGoOnBoat(priestOnLeftshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.D)
                {
                    leftShoreDevilGoOnBoat(devilOnLeftshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.DD)
                {
                    leftShoreDevilGoOnBoat(devilOnLeftshore.ToArray()[0].name);
                    leftShoreDevilGoOnBoat(devilOnLeftshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.PD)
                {
                    leftShorePriestGoOnBoat(priestOnLeftshore.ToArray()[0].name);
                    leftShoreDevilGoOnBoat(devilOnLeftshore.ToArray()[0].name);
                }
            }
            else
            {
                if (nextAction == NEXT_ACTION.P)
                {
                    rightShorePriestGoOnBoat(priestOnRightshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.PP)
                {
                    rightShorePriestGoOnBoat(priestOnRightshore.ToArray()[0].name);
                    rightShorePriestGoOnBoat(priestOnRightshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.D)
                {
                    rightShoreDevilGoOnBoat(devilOnRightshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.DD)
                {
                    rightShoreDevilGoOnBoat(devilOnRightshore.ToArray()[0].name);
                    rightShoreDevilGoOnBoat(devilOnRightshore.ToArray()[0].name);
                }
                else if (nextAction == NEXT_ACTION.PD)
                {
                    rightShorePriestGoOnBoat(priestOnRightshore.ToArray()[0].name);
                    rightShoreDevilGoOnBoat(devilOnRightshore.ToArray()[0].name);
                }
            }
            yield return(new WaitForSeconds(1.2f));

            // 开船
            moveBoat();
            yield return(new WaitForSeconds(1.2f));

            // 下船
            GoOffBoard(0);
            GoOffBoard(1);
            yield return(new WaitForSeconds(1.2f));

            isPrompting = false;
        }
        NEXT_ACTION getNextAction()
        {
            NEXT_ACTION nextAction = NEXT_ACTION.P;
            int         Pcount     = priestOnLeftshore.Count;
            int         Dcount     = devilOnLeftshore.Count;

            if (Pcount == 3 && Dcount == 3 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.DD;
            }
            else if (Pcount == 2 && Dcount == 2 && SSDirector.getInstance().state != State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.P;
            }
            else if (Pcount == 3 && Dcount == 2 && SSDirector.getInstance().state != State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.D;
            }
            else if (Pcount == 3 && Dcount == 1 && SSDirector.getInstance().state != State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.D;
            }
            else if (Pcount == 3 && Dcount == 2 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.DD;
            }
            else if (Pcount == 3 && Dcount == 1 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.PP;
            }
            else if (Pcount == 3 && Dcount == 0 && SSDirector.getInstance().state != State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.D;
            }
            else if (Pcount == 1 && Dcount == 1 && SSDirector.getInstance().state != State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.PD;
            }
            else if (Pcount == 2 && Dcount == 2 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.PP;
            }
            else if (Pcount == 0 && Dcount == 2 && SSDirector.getInstance().state != State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.D;
            }
            else if (Pcount == 0 && Dcount == 3 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.DD;
            }
            else if (Pcount == 2 && Dcount == 1 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.PP;
            }
            else if (Pcount == 0 && Dcount == 1 && SSDirector.getInstance().state != State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.P;
            }
            else if (Pcount == 1 && Dcount == 1 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.PD;
            }
            else if (Pcount == 0 && Dcount == 2 && SSDirector.getInstance().state == State.BOAT_STOP_ON_THE_LEFT_SHORE)
            {
                nextAction = NEXT_ACTION.DD;
            }
            return(nextAction);
        }