- Clear Flags:摄像机的背景模式
- Skybox:天空盒(默认选项),屏幕空白处显示当前摄像机的天空盒,没有天空盒则会显示背景色
- Solid Color:空白处显示默认设置的背景色
- Depth only:仅根据摄像机的深度(Depth的大小)来显示
- Don’t Clear:不清除。每帧的渲染结果会叠加在下一帧上。
- Background:背景颜色
- Culling Mask:摄像机能看见的层
- Projection:摄像机的投影模式
- Perspective:透视 物体符合近大远小
- Orthographic:正交
- Field of view:选取透视模式时 视野范围
- Size:选择正交模式时 视野大小
- Clipping Planes:摄像机视野范围 最近和最远
- Viewport Rect:用来实现分屏
- Depth:深度
- Rendering Path:选择摄像机的渲染模式
- Target Texture:目标贴图 (可以用来实现小地图,把摄像机的画面打到一张贴图上)
- Occlusion Culling:是否使用遮罩剔除
- Target Display:最终显示在Game视图的哪个display层中
其他相关:
快速切换Camera视角与Scene视角一致 ctl+shift+f
Unity里面有一些坐标比较容易弄混淆
世界坐标系World Space 全局坐标:transform组件里面的坐标信息就是基于世界坐标系的
屏幕坐标Screen Space:就是硬件屏幕作为坐标系,和分辨率有关系。屏幕的左下角为(0,0),右上角为(screen.width, screen.height)
UI坐标系:左上角是(0,0) 右下角是(screen.width, screen.height)
视口坐标View Port:摄像机占据的视口大小,左下角是(0,0) 右上角是(1,1)
坐标之间的转换:
- 全局坐标 屏幕坐标
Camera.ScreenToWorldPoint(Vector3 position)
:屏幕→全局
Camera.WorldToScreenPoint(Vector3 position)
:全局→屏幕
- 屏幕坐标 视口坐标
Camera.ScreenToViewportPoint(Vector3 postion)
:屏幕→视口
Camera.ViewportToScreenPoint(Vector3 position)
:视口→屏幕
- 全局坐标 视口坐标
Camera.WorldToViewportPoint(Vector3 position)
:全局→视口
Camera.ViewportToWorldPoint(Vector3 position)
:视口→全局
- 全局坐标 局部坐标
transform.TransformPoint(transform.localPosition);
局部→世界
transform.parent.InverseTransformPoint(transform.position);
世界→局部
3D→UI方法:
3D→屏幕:RectTransformUtility.WorldToScreenPoint();
屏幕→UI:RectTransformUtility.ScreenPointToLocalInRectangle();
主摄像机:camera的tag标记为MainCamera,可以通过Camera.main
直接访问,但是当有多个camera都标记为MainCamera的时候,就没有办法区分主摄像机了,所以不安全。
在UI上显示模型
UI上面是不能直接显示模型的,我们可以添加一个模型层,然后新建一个相机专门来看这个模型层,将模型层相机深度设置到最高,那么他就会显示到最上面。如何保持自适应呢?手动根据设定的分辨率和当前分辨率的比值来缩放模型。计算当前分辨率和设计分辨率的比值,如果当前分辨率小于设计分辨率,放大比值倍。
这种现实方法是由缺陷的,模型渲染顺序是跟着相机走的,只能在UI上面或者下面,如果想在两个UI之间显示怎么办?使用RenderTexture,创建Render Texture,将相机看到的内容渲染到纹理上,然后把纹理显示在UI的RawImage上。
LOD Group
我们知道物体实际上是存在远近关系的,如果某个物体离我们很远(比如吃鸡里面很远处的山头上的树、房子),我们还是将它正常渲染出来,效率会很低。这个时候我们使用该组件来提高渲染的效率。根据摄像机的远近来动态更换高、低精度的模型,或者剔除部分渲染。
Lod Bias:表示Lod偏移值,会影响剔除的距离
Maximum LOD Level:表示Lod的最大等级。运行时修改它可以优化低端机器
原理是给物体添加包围盒,摄像机发生移动后,计算与这个包围盒的百分比。可以添加任意数量的LOD并且设置每个等级显示或者不显示什么。本质上是用内存来换时间,预先加载好几个显示状态,然后根据摄像机与它的距离来切换不同的显示状态。