【问题标题】:Problems with canvas buttons in unity统一画布按钮的问题
【发布时间】:2016-05-16 17:44:38
【问题描述】:

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

按钮代码:

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();
    }
}

【问题讨论】:

  • 很抱歉,我需要澄清一下。随机,您的三个按钮之一停止工作,并且没有文字?如果是这样,您能否向我们展示设置按钮文本和激活/停用按钮的代码?上面的代码并没有真正帮助我们,除非你的按钮都在“pauseObjects”中......

标签: c# unity3d


【解决方案1】:

您的 UI 设置方式不正确。如果您必须在暂停期间遍历所有内容,那么您做错了。我之前回答过一个类似的问题,这里只是复制粘贴。

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

您不需要 GameOver 场景。 GameOverCanvas 很好。 粗体的 GameObjects 是 parent Objects(Canvas)。以 '-' 开头的是 child 游戏对象。

第 1 步:

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

-playButton;
-settingsButton;
-exitGameButton;

MainMenuCanvas script 附加到MainMenuCanvas 对象。

第 2 步:

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

-pauseButton
-jumpButton

GameCanvas script 附加到GameCanvas 对象。

第 3 步:

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

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

PauseCanvas script 附加到PauseCanvas 对象。

第 4 步:

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

-backButton;

SettingsCanvas script 附加到SettingsCanvas 对象。

第 5 步:

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

-playAgainButton;
-backToMainMenuButton;
-exitGameButton;

GameOverCanvas script 附加到GameOverCanvas 对象。

第 6 步:

Game场景中,确保只启用了GameCanvas。画布的其余部分应手动禁用

第 7 步:

Menu 场景中,确保仅启用了 MainMenuCanvas。画布的其余部分应手动禁用

正确设置后,我提供的 UI 代码模板应该可以工作。不再有用户界面重叠或文字消失。您可以轻松添加或删除功能。

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

【讨论】:

  • 一切正常!感谢您付出如此多的努力并帮助我。你是个传奇。
猜你喜欢
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多