13.3.3 渲染模式
UI在2D、3D和VR环境中呈现的方式相异,原理也有所不同。在前文介绍过呈现方式的相关内容,此处不再赘述。在Unity中,如何实现UI在不同维度虚拟环境中的呈现方式,主要通过设置Canvas的“Render Mode”(渲染模式)选项来实现,其决定UI是在屏幕空间还是世界空间中渲染。
图13.12 Canvas的三种渲染模式
选中场景中的Canvas对象,在Inspector面板中打开Canvas组件下Render Mode选项的下拉菜单,其中包含三个选项,即Canvas的三种渲染模式:Screen Space.O.verlay(屏幕空间.叠加)、Screen Space.Camera(屏幕空间.摄像机)、World Space(世界空间),如图13.12所示。
下面分别介绍。
1.Screen Space.Overlay
这是Unity中的默认渲染模式,可以将UI元素放置在场景顶部的屏幕上。如果屏幕大小或分辨率有所调整,则Canvas将自动改变大小以与之匹配。
2.Screen Space.Camera
此种渲染模式与第一种相似,主要区别是在此种渲染模式下,Canvas被放置在指定相机前面的给定距离。UI元素由此相机渲染,也就是说相机的设置会影响UI的外观。如果相机的Projection设置为Perspective,则UI元素将会以透视方式呈现,并且透视形变的数量可以由相机的Field of View参数控制。如果屏幕大小、分辨率或相机视锥体有所调整,Canvas也会自动改变大小以与之匹配。这种渲染模式下,Canvas好像是“吸附”在某个相机的视场中,如图13.13所示。
图13.13 Screen Space.Camera渲染模式效果
3.World Space
在这种渲染模式下,Canvas将如同场景中其他对象而存在,也是在VR应用中需要为Canvas设定的渲染模式。Canvas的大小可以通过Rect Transform选项栏进行设置,UI元素将根据其3D坐标位置呈现在场景中,与其他3D对象之间也会形成位置的相互关系,如图13.14所示。如果想让UI成为虚拟世界的一部分,则可以选择此种模式,这也被称为“叙事界面”(diegetic interface)。
图13.14 World Space渲染模式效果