磁贴未遵循分支棋盘游戏路径中的输入

时间:2019-04-05 08:43:25

标签: c# unity3d

我正在Unity中制作一个具有多个分支路径的棋盘游戏,玩家可以在其中决定遵循哪个分支。 (以为Mario Part游戏板为例),但是玩家输入的路径不起作用。

因此,我有一个脚本,该脚本的令牌遵循设置的路径,并且(路径的链接列表)带有for循环,以使令牌移动其分配的数量。在循环中,我有一个If语句,该语句检查磁贴具有多少条路径,如果有多个,则运行一个单独的脚本来暂停游戏,并提供菜单提示供玩家选择一条路径或另一条路径。 / p>

我曾尝试在循环中继续比赛,但他们要么忽略了玩家的输入,要么是后面的输入,要么就是破坏了代码。

    `for (int i = 0; i < spacesToMove; i++)
        {
            if (final_Waypoint == null)
            {
                final_Waypoint = Starting_Waypoint;
            }
            else
            {
                if (final_Waypoint.Next_Waypoint == null || final_Waypoint.Next_Waypoint.Length == 0)
                {
                    //we are overshooting the final waypoint, so just return some nulls in the array
                    //just break and we'll return the array, which is going to have nulls at the end.
                    Debug.Log(Current_Waypoint);
                    break;
                }
                else if (final_Waypoint.Next_Waypoint.Length > 1) // && if playerID == 0 so it only appears for players.
                {
                    menu.Pause_for_Choice();
                    //if (menu.ButtonPress == true)
                    final_Waypoint = final_Waypoint.Next_Waypoint[menu.choice_int]; 
                    //***There's a bug here. It calls menu as per normal, and the game pauses.
                    //But when I click 'no', choice_int isn't updated first: this function finishes first,
                    //so this function gets old choice_int. THEN the button function executes.
                    Debug.Log("test 3 " + menu.choice_int);

                }
                else
                {
                    final_Waypoint = final_Waypoint.Next_Waypoint[0];
                }
            }

            listOfWaypoints[i] = final_Waypoint;
            Debug.Log("i:" + i);

        }
        return listOfWaypoints;
    }`


`{
    public GameObject choice_Menu;
    public bool isPaused = true;
    public int choice_int=0;
    public int choice_placeholder = 0;


    public void Pause_for_Choice()
    {
        isPaused = true;
        choice_Menu.SetActive(true);
        Time.timeScale = 0;
    }

    public void Yes()
    {
        choice_placeholder = 0;
        UnPause_Game();
    }

    public void No()
    {
        choice_placeholder = 1;
        UnPause_Game();
    }

    public void UnPause_Game()
    {
        isPaused = false;
        choice_Menu.SetActive(false);
        Time.timeScale = 1;
    }
}`

0 个答案:

没有答案