所以,我的游戏按钮包括:主菜单按钮,重启按钮和播放按钮。一切正常,但有时按钮的文本中没有一个加载,其中一个不起作用。我不确定如何解决这个问题,因为它是随机发生的,而不是每次都发生。
按钮的代码:
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();
}
}
答案 0 :(得分:0)
您的UI设置方式不正确。如果你必须在暂停期间循环遍历所有内容,那么你做错了。我之前已经回答了类似的问题,只会在此复制并粘贴。
使用不同的Canvas 分隔您的用户界面,并根据它们的显示时间对其进行分组。然后,您可以切换整个画布 / 关闭。在此帖子之前您的[帖子] [1]显示您正在使用图像作为按钮,并且您将两个图像附加到您用作按钮的不同脚本。对按钮使用按钮,对不可点击的对象使用图片。就那么简单。所以将这些图像更改为按钮。
您不需要GameOver场景。 GameOverCanvas很好。 粗体的游戏对象是父对象(画布)。那些以“ - ”开头的是子 GameObjects。
第1步:
创建Canvas
并将其命名为 MainMenuCanvas (当游戏加载时显示第一个UI)。创建每个子按钮并将其重命名如下( GameObject-> UI-&gt按钮强>):
-playButton;
-settingsButton;
-exitGameButton;
将MainMenuCanvas script附加到 MainMenuCanvas 对象。
第2步:
创建Canvas
并将其命名为 GameCanvas (在游戏中显示)。创建每个子按钮并将其重命名如下( GameObject-&gt; UI-&gt; Button < /强>):
-pauseButton
-jumpButton
将GameCanvas script附加到 GameCanvas 对象。
第3步:
创建Canvas
并将其命名为 PauseCanvas (单击暂停按钮时显示)。创建每个子按钮并将其重命名如下( GameObject-&gt; UI-&gt按钮强>):
-resumeButton;
-backToMainMenuButton;
-settingsButton;
-exitGameButton;
将PauseCanvas script附加到 PauseCanvas 对象。
第4步:
创建Canvas
并将其命名为 SettingsCanvas (单击设置按钮时显示)。创建每个子按钮并将其重命名如下( GameObject-&gt; UI-&gt按钮强>):
-backButton;
将SettingsCanvas script附加到 SettingsCanvas 对象。
第5步:
创建Canvas
并将其命名为 GameOverCanvas (当游戏结束或玩家被杀时显示)。创建每个子按钮并将其重命名如下( GameObject-&gt; UI-&GT;按钮强>):
-playAgainButton;
-backToMainMenuButton;
-exitGameButton;
将GameOverCanvas script附加到 GameOverCanvas 对象。
第6步:
在游戏场景中,确保仅启用 GameCanvas 。画布的其余部分应手动禁用。
第7步:
在菜单场景中,确保仅启用 MainMenuCanvas 。画布的其余部分应手动禁用。
正确完成此设置后,我提供的UI代码模板应该可以正常工作。不再有UI 重叠或文字消失。您可以轻松添加或删除功能。
您的UI设置应如下图所示。