UI Canvas 带有 UI 按钮的图像

UI Canvas Image with UI Buttons

我有 UI canvas 个带有 2 个 UI 按钮的图像。我设置为背景,那层。但是这一层覆盖了我的游戏!我怎么知道它是什么?

我想将第二张图片设置为背景。

我正在使用 UI Canvas 因为它会通过锚点自动调整到任何屏幕。

-

我建议您考虑使用单独的 UI 相机。这将允许您仅将 UI 绘制到第二个相机而不是主相机。然后,您可以相对于其他所有内容以您想要的任何深度绘制它。为此,您必须创建另一个相机并将其设置为 Culling MaskClear Flags 以仅绘制 UI 而不是天空盒。

如果您 google 'UI camera Unity' 应该有更多关于完全按照您的意愿行事的信息。这是比较常见的事情。

除非游戏对象是 UI 的一部分,否则场景中的游戏对象不应位于 Canvas 之下。您要使用的背景图片不是 UI。您的 post 表明您只想将其作为 UI,因为 Canvas 会自动调整大小以匹配屏幕大小。

如何使用代码解决此问题而不使背景纹理成为 UI 的一部分。

1.Remove/Delete 当前背景及其 Canvas 对象。你不需要它。

2.重新导入背景图片并确保其Texture Type设置为Sprite (二维和UI)

3.Drag它到场景中并重命名为Background。现在把它放在 Bee GameObject 下。 Bee 现在应该是 Background 纹理的 parent 并且 Background 纹理应该在 地面物体。

4.Create 一个名为 BackGroundResizer 的脚本并将下面的代码放入其中。将脚本附加到 Background GameObject/Texture.

// Use this for initialization
void Start()
{
 resizeSprite();
}

void resizeSprite()
{
 SpriteRenderer bgSprite = GetComponent<SpriteRenderer>();
 float screenHeight = Camera.main.orthographicSize * 2;
 float screenWidth = screenHeight / Screen.height * Screen.width;
 transform.localScale = new Vector3(screenWidth / bgSprite.sprite.bounds.size.x,   screenHeight / bgSprite.sprite.bounds.size.y, 1);
}

这应该可以解决您当前的 post 问题。下面介绍如何正确设置 UI.

使用不同的 Canvas 来 分隔 您的 UI 并根据它们的显示时间将它们分组。然后你可以切换整个 Canvas on/off。您在此 post 之前的 表明您正在使用图像作为按钮,并且您将不同的脚本附加到您用作按钮的两个图像上。使用 Buttons 作为 buttons,使用 image 作为 non-clickable对象。就那么简单。所以将这些图像更改为按钮。

您不需要 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->按钮):

-pauseButton
-jumpButton

GameCanvas script 附加到 游戏 Canvas 对象。

第 3 步:

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

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

PauseCanvas script 附加到 PauseCanvas 对象。

第 4 步:

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

-backButton;

SettingsCanvas script 附加到 设置 Canvas 对象。

第 5 步:

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

-playAgainButton;
-backToMainMenuButton;
-exitGameButton;

GameOverCanvas script 附加到 GameOverCanvas 对象。

第 6 步:

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

第 7 步:

Menu场景中,确保只有MainMenuCanvas启用。 canvas 的其余部分应手动 禁用

一旦您正确设置了此设置,我提供的 UI 代码模板应该可以使用。不再 UI 相互重叠 ,您可以轻松添加或删除功能。

您的设置应如下图所示。