Unity 通过单击按钮从菜单切换到游戏

问题描述 投票:0回答:1

您好,我正在使用 Unity 创建一个游戏,这是我第一次使用 Unity,我很难从菜单切换到实际游戏。 我开始开发我的游戏,因此当我单击播放按钮时,游戏的网格会自动显示。 但我想在进入游戏之前有一个菜单,所以我添加了一个带有按钮的画布,这样当我单击按钮时就会发生变化。

但是我有点迷失了,因为当我按下播放时,两个元素都会显示,网格和按钮是正常的,因为我还没有配置逻辑,但我不知道该怎么做。我创建了一个 GameManager 对象,因为大多数指南和脚本都推荐它。 这是我的游戏管理员的脚本:

public class GameManager : MonoBehaviour

{
    public static GameManager Instance;
    public GameObject menuCanvas;
    public GridManager gridManager;

    public GameState State;

    private void Awake()
    {
        Instance = this;
    }

    private void Start()
    {
        ChangeState(GameState.Menu);
    }

    public void ChangeState(GameState newState)
    {
        State = newState;

        switch (State)
        {
            case GameState.Menu:
                break;
            case GameState.GameSearch:
                break;
            case GameState.Victory:
                break;
            case GameState.Lose:
                break;
            default:
                throw new ArgumentOutOfRangeException (nameof(State), newState, null);
        }


    }

    public void OnPlayNowClicked()
    {
        menuCanvas.SetActive(false); // this method is just for testing
    }
}

public enum GameState
{
    Menu = 0,
    GameSearch = 1,
    Victory = 2,
    Lose = 3
}

我在游戏提供的所有不同状态的末尾都有枚举,在“开始”方法中,我首先将状态设置为“菜单”。 如果我理解正确的话,我必须将按钮 OnClick 事件链接到我的 ChangeState() 方法,对吗?由于某种原因,我不确定是否无法在统一按钮面板中选择此方法。其次,如何向其传递不同的 GameState 参数?

c# unity-game-engine
1个回答
0
投票

要在单击按钮时调用 ChangeState,您必须首先在代码中引用该按钮

//at the very beggining
using UnityEngine.UI;

public class GameManager : MonoBehaviour

{
    //...
    //in your variable declarations
    public Button playButton;

然后在Unity编辑器中引用Inspector中的按钮

在start方法中,订阅Button的onclick事件

private void Start()
{
    ChangeState(GameState.Menu);
    playButton.onClick.AddListener(()=>{ChangeState(GameState.GameSearch);})
}

单击按钮时将调用 ChangeState(GameState.GameSearch)

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.