您好,我正在使用 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 参数?
要在单击按钮时调用 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)
希望这有帮助