Pivot 和 Archor

Pivot(轴心)

UI元素中那个中心的蓝色圆圈圈

当前Image的轴心点所在位置, 是UI物体旋转的轴心,当尝试旋转UI预制体时,会绕着这个轴点旋转

Archor(锚点)

在Image上由四个三角形组成的像风车一样的图标

  1. 当四个风车在一起时,面板中属性为Pos X 、Pos Y、Width、Height
  2. 当四个风车全部分开时,面板中属性为Left /Pos X、PosY/ Top 、Right、Bottom。

锚点是用来描述子物体对于父物体之间的位置关系的, 简单说来就是

使用需要注意的几个小点
  1. 当四个风车在一起时,Image不会随窗口改变而放大缩小;
  2. 当四个风车两两一起,左右两边分开的时候,Image不会随着父节点的高变化而变化,而只会随着宽的大小变化;
  3. 当四个风车两两一起,上下两边分开的时候,Image不会随着父节点的宽变化而变化,而只会随着高的大小变化;
  4. 当四个风车全分开的时候,父节点物体大小的改变总是会影响到这个Image

不同分辨率下的UI自适应的问题

分三步:

  1. 根据项目情况设置UI预制体的位置并确定好锚点
  2. 找到Canvas物体下的Canvas Scaler组件,设置UI Scale Mode为Scale with Screen Size
  3. 找Match的滑动条,左端为Width,右端为Height,拖动滑动条来做到想要的效果。

画布的Render Mode

Unity的画布渲染有三种方式

  • Screen Space - Overlay
  • Screen Space - Camera
  • World Space

Screen Space - Overlay

该方式会使永远会输出UI画面到屏幕上,且UI画面永远在物体前面,即时我们没有在层级面板中设置摄像头,也会设置UI画面

使用场景:人物主血/蓝条,人物的头像,游戏主功能按钮

Screen Scape - Camera

该方式会使输出屏幕中的3D物体和UI画面做空间上的混合,这种混合取决于面板下的Plane Distance参数

注意:这个方式下画布仍然会跟着摄像机运动,即画布永远会渲染UI界面

Plane Distance参数使用解释:

可以理解为Canvas距离摄像机的设置距离

  • Camera模式下,Canvas的Rect Transform被禁止调整,Canvas的Z值 = 摄像机(主)+ Plane Distance
  • 3D物体:当物体Transform的值在Canvas的范围之中,如果Z值 >= Canvas.RectTransfrom.z, 物体会被渲染在UI的后面, 反之,物体被渲染在UI的前面。
  • UI物体:取决于Inspector面板->Sprite Renderer组件->Additional Settings->Order in Layer值,该值大于Canvas下的Order in Layer,就会被渲染,否,则被覆盖

使用场景:没有想到,也许某些特殊项目有特殊需求(比如人物特殊对话面板?),希望各位读者指正

World Space

此模式将 UI 视为场景中的平面对象进行渲染。但是,与 Screen Space - Camera 模式不同,该平面不需要面对摄像机,可以根据喜好任意定向。
画布的大小可以使用矩形变换来设置,但画布在屏幕上的大小将取决于摄像机的视角和距离。其他场景对象可以位于画布后面、穿透画布或位于画布前面。

此模式下,3D物体渲染优先级根Camera状态下一致,UI物体有变。

UI物体:

  1. 渲染优先级仍然受 Sorting Layer和 Order in Layer影响,当物体的Sorting Layer与画布相同时,Order in Layer小于画布的会被覆盖,否则,在画布之前
  2. UI物体优先级此时也遵守3D物体的Z值规则(详情见 Camera下的 Plane Distance使用参数)

使用场景:场景中非主角角色的血条,名字,徽章等。


emmm, 先总结这么多,如果碰到新问题会持续更新的