C# 带有UI按钮的UI画布图像
我有2个UI按钮的UI画布图像。我把那层设置为背景。但这一层覆盖了我的游戏!我怎么知道这一切的背后是什么 我想把第二张图片设为背景 我之所以使用UI画布,是因为它通过锚自动调整到任何屏幕C# 带有UI按钮的UI画布图像,c#,unity3d,unityscript,unity5,C#,Unity3d,Unityscript,Unity5,我有2个UI按钮的UI画布图像。我把那层设置为背景。但这一层覆盖了我的游戏!我怎么知道这一切的背后是什么 我想把第二张图片设为背景 我之所以使用UI画布,是因为它通过锚自动调整到任何屏幕 -我建议您考虑使用单独的UI摄像头。这将允许您仅绘制第二个摄影机的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;