【Unity】UI界面展示3D模型

1,467 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

方法一:

场景中同时使用2个相机,UI相机渲染UI输出到屏幕,3D相机将3D物体渲染到RenderTexture,也显示在UI,通过UI输出到屏幕。

使用RenderTexture。RawImage作为UI元素可随意调节显示层级(即UI子物体先后顺序),适合将3D物体投影到局部UI界面,可以将3D物体显示在不同的UI层级之间,层级显示更加灵活。

1. Project中创建RenderTexture;

2. UI新建RawImage,设置Texture为RenderTexture;

3. 3D物体Cube标记Layer为"Cube";

4. 新建相机,设置ClearFlags、CullingMask,设置TargetTexture为RenderTexture。

方法二:

场景中同时使用2个相机,UI相机渲染UI输出到屏幕,3D相机渲染3D物体也输出到屏幕。

第二个相机渲染指定的3D物体层级,适合将3D场景作为UI界面的背景或前景使用,3D物体只能显示在UI之前或之后,不能显示在UI层级之间。

1. 3D物体标记Layer;

2. 新建相机,设置CullingMask,只渲染3D Layer。

  • Clear Flags:确定将清除屏幕的哪些部分。通过设置可以使用多个摄像机来绘制不同游戏元素。每个摄像机在渲染其视图时都会存储颜色和深度信息。屏幕中未绘制的部分为空,默认情况下将显示天空盒。使用多个摄像机时,每个摄像机都会在缓冲区中存储自己的颜色和深度信息,随着每个摄像机渲染而累积越来越多数据。
  • Skybox:默认设置。屏幕的任何空白部分都将显示当前摄像机的天空盒。
  • Solid color:屏幕的任何空白部分都将显示当前摄像机的背景颜色。
  • Depth only:通过Culling Mask设置相机需要绘制的物体,然后通过Depth深度值,忽略物体的3D世界相对位置,将该相机绘制的图像显示在其他相机的上面或下面。
  • Don’t clear:此模式不会清除颜色或深度缓冲区。结果是将每帧绘制在下一帧之上,从而产生涂抹效果。
  • Culling Mask:包含或忽略要由摄像机渲染的对象层。

方法三:

1. 将3D物体的层级Layer改为UI,当做UI元素,使用UI相机直接渲染3D物体。

2. UI Canvas不同的相机渲染方式,会影响3D物体的比例,需要调整3D物体的缩放和方向,才能在UI相机中正常显示。