假设已有Sprite S1和Imgae I1,运行结果如图;
位于UGUI Canvas对象下的I1遮挡住了作为Sprite的S1,假设我们只想将Image作为背景,则需要将I1置于S1后方;
第一步
新建一个Camera,命名为UICamera,并更改Projection为Orthographic(正交相机),并将Depth(相机深度)改为1;
同时记得将MainCamera的Clear Flags从Skybox改为Don't Clear,否则Skybox的颜色会覆盖UICamera的渲染画面;
第二步
将Canvas的Render Mode由Screen Space-Overlay改为Screen Space-Camera;
Screen Space-Overlay的作用是让Canvas永远前置在所有对象之前,不会被遮挡,可以用作制作血条、聊天框等固定前置的部件;
Screen Space-Camera的作用是将Canvas绑定一个摄像机,可以根据摄像机的Depth(相机深度)来调整和其他摄像机之间的显示次序,这里用到的原理就是这个;
第三步
指定UICamera为Canvas的Render Camera;
第四步
点击运行,可以看见Sprite已经在UI前面了。
原理:
Unity2D模式下的基本相机运行原理如图所示,面对用户的方向为Z轴,用户的视线方向是从Z轴负方向到正方向。原来的MainCamera深度为0,意即渲染画面位于Z轴坐标0点处,而UICamera的相机深度为1,意即渲染画面位于Z坐标1点处,从而实现MainCamera渲染的画面覆盖了UICamera渲染的画面。
功能作用在于可以制作2D游戏的时候用Image对象来制作游戏背景,以及可以用Sprite对象结合UGUI制作滚动背包。