统一canvas按钮的问题

所以,我的游戏按钮包括:主菜单按钮,重启按钮和播放按钮。 一切正常,但偶尔其中一个按钮的文本没有加载,其中一个不起作用。 我不知道如何解决这个问题,因为它是随机发生的,而不是每次都发生。

按钮的代码:

GameObject[] pauseObjects; void Start() { Time.timeScale = 1; pauseObjects = GameObject.FindGameObjectsWithTag("ShowOnPause"); hidePaused(); } public void showPaused() { foreach (GameObject g in pauseObjects) { g.SetActive(true); } } public void hidePaused() { foreach (GameObject g in pauseObjects) { g.SetActive(false); } } public void LoadLevel(string level) { Application.LoadLevel(level); } public void pauseControl() { if (Time.timeScale == 1) { Time.timeScale = 0; showPaused(); } else if (Time.timeScale == 0) { Time.timeScale = 1; hidePaused(); } } 

您的UI设置方式不正确。 如果你必须在暂停期间循环遍历所有内容,那么你做错了。 我之前已经回答过类似的问题,只会在此复制并粘贴。

使用不同的Canvas 分隔 UI并根据它们的显示时间对它们进行分组。 然后你可以打开 / 关闭整个canvas。 在此post之前[post] [1]显示您正在使用图像作为按钮,并且您将两个图像附加到用作按钮的不同脚本。 按钮用于按钮图像用于不可点击的对象。 就那么简单。 所以将这些图像更改为按钮。

您不需要GameOver场景。 GameOverCanvas很好。 粗体的GameObjects是对象(Canvas)。 以“ ”开头的那些是儿童 GameObjects。

步骤1:

创建Canvas并将其命名为MainMenuCanvas (当游戏加载时显示第一个UI)。创建每个子按钮并将其重命名如下( GameObject-> UI-> Button ):

 -playButton; -settingsButton; -exitGameButton; 

将MainMenuCanvas脚本附加到MainMenuCanvas对象。

第2步:

创建一个Canvas并将其命名为GameCanvas (在游戏中显示)。创建每个子按钮并将其重命名如下( GameObject-> UI-> Button ):

 -pauseButton -jumpButton 

将GameCanvas脚本附加到GameCanvas对象。

第3步:

创建一个Canvas并将其命名为PauseCanvas (单击暂停按钮时显示)。创建每个子按钮并将其重命名如下( GameObject-> UI-> Button ):

 -resumeButton; -backToMainMenuButton; -settingsButton; -exitGameButton; 

将PauseCanvas脚本附加到PauseCanvas对象。

第4步:

创建一个Canvas并将其命名为SettingsCanvas (单击设置按钮时显示)。创建每个子按钮并将其重命名如下( GameObject-> UI-> Button ):

 -backButton; 

将SettingsCanvas脚本附加到SettingsCanvas对象。

第5步:

创建一个Canvas并将其命名为GameOverCanvas (当游戏结束或玩家被杀死时显示)。创建每个子按钮并将其重命名如下( GameObject-> UI-> Button ):

 -playAgainButton; -backToMainMenuButton; -exitGameButton; 

将GameOverCanvas脚本附加到GameOverCanvas对象。

第6步:

游戏场景中,确保仅启用GameCanvas 。 应手动禁用canvas的其余部分。

第7步:

菜单场景中,确保仅启用MainMenuCanvas 。 应手动禁用canvas的其余部分。

正确完成此设置后,我提供的UI代码模板应该可以正常工作。 不再有UI 重叠或文本消失 。 您可以轻松添加或删除function。

您的UI设置应如下图所示。

在此处输入图像描述