[Unity] 2D游戏开发中关于UI层的设置

首先我也是刚开始玩unity,还很缺经验。

 

在学习制作《俄罗斯方块》游戏时,我需要在界面上显示分数、时间,以及开始、结束游戏等UI元素。

我们直接将UI元素添加完成时,会发现在Scene中,UI界面相比于游戏的窗口来说实在太大了。当然了,这样不管它,最终也是可以显示出UI元素的。

 

请看下图, 在我们添加UI元素时,会自动将UI元素放入Canvas中,我们点击查看Canvas的属性:

 

[Unity] 2D游戏开发中关于UI层的设置

 

从图下可以看到,在 Canvas属性中,有一个Render Mode,默认值是  Screen Space - Overlay,  这是什么意思呢? 我们可以从手册中查到,ScreenSpaceOverlay表示“使用二维画布渲染场景空间”,这样的结果就是最终UI层会脱离游戏世界的Camera, 然后你会发现, 显示效果可能不是你想要的,比如文字变得很大或者很小。

 

为了能在Scene视图中所见即所得的设计场景,我将Canvas修改成了如下:

 

[Unity] 2D游戏开发中关于UI层的设置

 

将 RenderMode 改为了 ScreenSpaceCamera,也就是让UI层在最终渲染时使用场景中配置的摄相机。然后将Render Camera 修改为我们场景中的摄像机, 这样子就可以让UI层与我们所控制的场景摄像机保持同步。

但是要注意,这个模式下,Sorting Layer为变为Defauft,也就是和其它的游戏对象默认同一层,这样可能会存在,UI层被游戏对象档住的情况,所以我们Edit Layers, 在Sorting Layer中添加一个UI层,放到最低下,让它居于其它图层之上。

然后我们可以再看到 Canvas Scaler (Script) 属性, 将 UI Scale Mode 修改为 Scale With Screen Size,  意思是让UI层随屏幕大小缩放。

然后可以设置Reference Resolution中的X、Y值为我们的游戏最终要使用主流屏幕像索数,这样子可以更好的所见即所得的设计出最终的显示效果。可能你改完Reference Resolution后,发现文字什么的变小了,没关系,可以调节Match来进行缩放。

 

通过上面的方法, 我终于可以随心所欲的设计UI了。

 

转载于:https://www.cnblogs.com/yangyxd/articles/5261272.html