最近,使用Unity在三维场景中显示文本时,发现文本随视角运动而运动,始终显示在视野中央。经过一番实验,终于将文本显示在世界空间内的固定位置。原来文本的显示位置是否随视角移动是由Unity Canvas的渲染模式决定的,并且所有的UI组件都可以通过Canvas来设置渲染模式。

1、 什么是Canvas

        Canvas(画布)是承载所有UI元素的区域。所有的UI元素都必须是Canvas的子对象。如果场景中没有画布,那么我们创建任何一个UI元素,都会自动创建画布,并且将新元素置于其下。
Unity Canvas组件的三种渲染模式

2、Canvas的三种渲染模式

        Canvas共有三种渲染模式,分别是ScreenSpace-Overlay、ScreenSpace-Camera和WorldSpace。Canvas的渲染模式在Canvas的Inspector窗口下设置,如下图所示:
Unity Canvas组件的三种渲染模式

2.1 Screen Space-Overlay模式

        Screen Space-Overlay(屏幕空间-覆盖模式)UI元素的位置坐标是屏幕空间的坐标,Overlay模式下画布会填满整个屏幕空间,并将画布下面的所有的UI元素置于屏幕的最上层。如果屏幕尺寸被改变,画布将自动改变尺寸来匹配屏幕。
        此时,画布上的UI组件会随视角移动。
        Screen Space-Overlay模式的画布有Pixel Perfect和Sort Layer两个参数:

(1)Pixel Perfect:只有RenderMode为Screen类型时才有的选项。使UI元素像素对应,效果就是边缘清晰不模糊。

(2)Sort Layer: Sort Layer是UGUI专用的设置,用来指示画布的深度。

2.2 Screen Space-Camera模式

        Screen Space-Camera(屏幕空间-摄影机模式)UI元素的位置坐标是屏幕空间的坐标,画布也是填满整个屏幕空间,如果屏幕尺寸改变,画布也会自动改变尺寸来匹配屏幕。所不同的是,在该模式下,画布会被放置到摄影机前方。在这种渲染模式下,画布看起来绘制在一个与摄影机固定距离的平面上。所有的UI元素都由该摄影机渲染,因此摄影机的设置会影响到UI画面。
        在此模式下,UI元素是由perspective也就是视角设定的,视角广度由Filed of View设置。
        此时,画布上的UI组件会随视角移动。
它比Screen Space-Overlay模式的画布多了下面几个参数:

(1)Render Camera:渲染摄像机

(2)Plane Distance:画布距离摄像机的距离

(3)Sorting Layer: Sorting Layer是UGUI专用的设置,用来指示画布的深度。可以通过点击该栏的选项,在下拉菜单中点击“Add Sorting Layer”按钮进入标签和层的设置界面,或者点击导航菜单->edit->Project Settings->Tags and Layers进入该页面。

可以点击“+”添加Layer,或者点击“-”删除Layer。画布所使用的Sorting Layer越排在下面,显示的优先级也就越高。

(4)Order in Layer:在相同的Sort Layer下的画布显示先后顺序。数字越高,显示的优先级也就越高。

2.3 World Space模式

        World Space即世界空间模式,此模式下UI元素的位置坐标是世界空间的坐标。画布作为场景中的一部分被固定显示在场景中,显示效果类似Plane组件。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-22
  • 2021-12-26
  • 2021-12-19
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-13
  • 2021-09-03
  • 2021-06-16
  • 2021-09-18
  • 2022-12-23
相关资源
相似解决方案