Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有UI按钮的UI画布图像_C#_Unity3d_Unityscript_Unity5 - Fatal编程技术网

C# 带有UI按钮的UI画布图像

C# 带有UI按钮的UI画布图像,c#,unity3d,unityscript,unity5,C#,Unity3d,Unityscript,Unity5,我有2个UI按钮的UI画布图像。我把那层设置为背景。但这一层覆盖了我的游戏!我怎么知道这一切的背后是什么 我想把第二张图片设为背景 我之所以使用UI画布,是因为它通过锚自动调整到任何屏幕 -我建议您考虑使用单独的UI摄像头。这将允许您仅绘制第二个摄影机的UI,而不绘制主摄影机的UI。然后,你可以在你想要的任何深度相对于其他任何东西画它。为此,您必须创建另一个摄像头,并将其设置为消隐遮罩和清除标志,以仅绘制用户界面,而不是天空框 如果你在谷歌上搜索“UI摄像头统一”,应该会有更多关于做你想做的

我有2个UI按钮的UI画布图像。我把那层设置为背景。但这一层覆盖了我的游戏!我怎么知道这一切的背后是什么

我想把第二张图片设为背景

我之所以使用UI画布,是因为它通过锚自动调整到任何屏幕


-

我建议您考虑使用单独的UI摄像头。这将允许您仅绘制第二个摄影机的UI,而不绘制主摄影机的UI。然后,你可以在你想要的任何深度相对于其他任何东西画它。为此,您必须创建另一个摄像头,并将其设置为
消隐遮罩
清除标志
,以仅绘制用户界面,而不是天空框


如果你在谷歌上搜索“UI摄像头统一”,应该会有更多关于做你想做的事情的信息。这是一种比较常见的做法。

我建议您考虑使用单独的UI摄像头。这将允许您仅绘制第二个摄影机的UI,而不绘制主摄影机的UI。然后,你可以在你想要的任何深度相对于其他任何东西画它。为此,您必须创建另一个摄像头,并将其设置为
消隐遮罩
清除标志
,以仅绘制用户界面,而不是天空框


如果你在谷歌上搜索“UI摄像头统一”,应该会有更多关于做你想做的事情的信息。这是一个相对常见的操作。

除非游戏对象是UI的一部分,否则场景中的任何游戏对象都不应位于画布下。要使用的背景图像不是UI。您的帖子显示您只希望将其作为UI,因为Canvas会自动调整大小以匹配屏幕大小

如何使用代码修复此问题,而不将背景纹理作为UI的一部分

1.删除当前背景及其画布对象。你不需要它

2.重新导入背景图像,并确保其纹理类型设置为精灵(2D和UI)

3.将其拖动到场景中,并将其重命名为背景。现在把它放在蜜蜂游戏对象Bee现在应该是背景纹理的父对象,背景纹理应该位于地面对象的顶部

4.创建一个名为
BackGroundResizer
的脚本,并将下面的代码放入其中。将脚本附加到背景游戏对象/纹理

// 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);
}
将附加到MainMenuCanvas对象

第二步:

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

将附加到游戏画布对象

第三步:

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

将连接到PauseCanvas对象

第4步:

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

将连接到设置ScanVas对象

第五步:

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

将附加到GameOverNVAS对象

第6步:

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

第7步:

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

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

您的设置应如下图所示


除非游戏对象是UI的一部分,否则场景中的任何游戏对象都不应位于画布下。要使用的背景图像不是UI。您的帖子显示您只希望将其作为UI,因为Canvas会自动调整大小以匹配屏幕大小

如何使用代码修复此问题,而不将背景纹理作为UI的一部分

1.删除当前背景及其画布对象。你不需要它

2.重新导入背景图像,并确保其纹理类型设置为精灵(2D和UI)

3.将其拖动到场景中,并将其重命名为背景。现在把它放在蜜蜂游戏对象Bee现在应该是背景纹理的父对象,背景纹理应该位于地面对象的顶部

4.创建一个名为
BackGroundResizer
的脚本,并将下面的代码放入其中。将脚本附加到背景游戏对象/纹理

// 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);
}
将附加到MainMenuCanvas对象

第二步:

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

将附加到游戏画布对象

第三步:

<
-pauseButton
-jumpButton
-resumeButton;
-backToMainMenuButton;
-settingsButton;
-exitGameButton;
-backButton;
-playAgainButton;
-backToMainMenuButton;
-exitGameButton;