1、Image 的overrideSprite和Sprite,overrideSprite可以重复设置,Sprite设置之后,则不能再次设置了。
2、transform.translate的理解
transform.translate(vector3.forward,space.self) 沿着自身坐标系的前向前进
transform.translate(vector3.forward,space.world) 沿着世界坐标前进
transform.translate(transform.forward,space.self)建议不使用这个用法。
它所表述的含义是,让物体在自身坐标系里面,按照自己坐标在世界坐标的前向偏移 ,进行移动
它会将transform.forward(0,0,1)从自身坐标系转到世界坐标系中坐标 vector2
如果物体发生过旋转:vector2 = (自身z轴在世界坐标系X轴的分量值, 0, 自身z轴在世界坐标系z轴的分量值) 1 * cos(旋转角度)
没有发生过旋转:vector2 = (0,0,1)
Vector3.Angle 计算两向量的夹角度数
Vector3.Cross 求两个向量的法向量
Vector3.Dot=|a||b|Cos(a,b) 计算两向量的夹角,如果方向相同,返回1,方向相反,返回-1,当向量之间的角度减小,它们得到更大的值。
3、ui自适应:
真正的项目中不是这样子进行适配的,因为这样子对 stretch 模式的 UI 不够友好,一般选择是根据高度进行适配,这样制作UI的时候高度上是可以固定的,然后宽度上需要进行自适应,和屏幕的两边进行对齐。因此真正的使用规则如下:1. Canvas 选择 Screen Space-Camera 模式;2. Camera 设置成正交模式;3. Canvas Scaler 选择 Scale With Screen Size, Screen Match Mode 选择 Match Width Or Height,比例设为1,即只和高度进行适配;4. Camera 的 Clear Flags 选择 Depth Only。5、UICamera的depth 设为1000,CullingMask 设为UI
camera.size 控制3d物体在ui中的大小
4、Scale With Screen Size
Screen Match Mode 又包含三种模式
* Match Width Or Height。下面包含一个Macht属性,当处于最左边时,屏幕高度对于UI大小完全没有任何影 响,只有宽度会对UI大小产生影响。假设宽度为Reference Resolution宽度的x倍,则UI整体缩放为Reference Resolution设置参数的x倍。也就是说只有宽度等于Reference Resolution宽度时,才能做到pixel perfect,否则像素就会有拉伸 ,当处于最右边时,与上述情况正好相反,决定整体缩放值的是高度,而宽度则没有任何影响 ,处于中间某处时,对上述两者的影响进行权重加成 。
math = 0 当分辨率与设定不同时, 会上下留黑边
math = 1 当分辨率与设定不同时,会左右留黑边
* Expand 缩放不剪切:当屏幕分辨率与设定不同时,选择变化较小的一个方向(横向还是纵向),进行缩放显示
,它会保证设计时分辨率能显示出来的缩放后依然能显示出来。
它会左右或者上下留黑边,但是会全部显示出来
使用RectTransform之后,会导致响应的控件发生缩放,控件会缩小
* Shrink 缩放剪切:当屏幕分辨率与设定不同时,选择变化较大的一个方向(横向还是纵向),进行缩放显示
,对于超出的部分剪切不显示。 不会留黑边,
使用RectTransform之后,控件正常比例显示
5、UGUI中Content Size Fitter的使用
1、适应于自身控件大小随着内容变化而变化,如text上面加上Content Size Filter之后,文本内容变化之后,text的大小也会跟着变化,长度和高度
2、Content Size Filter 和Layout Group 组合使用,可以一起控制父节点下面的节点的按顺序摆放,如与Virtical Layout Group一起使用,会使父节点下的子节点,按照垂直方向排列,父节点的大小由所有子节点来控制
3、Layout Group节点下面不准Content Size 的使用,所以一般content size 适应于控制自身控件的适应
6、unity中点击不规则图片
[RequireComponent(typeof(Image))]
public class AlphaHitTest : MonoBehaviour {
public float alpha = 0.1f;
private void Awake()
{
Image image = GetComponent<Image>();
if (image)
{
image.alphaHitTestMinimumThreshold = alpha;
}
}
}
可以把这个脚本挂在对应图片上,然后图片设置勾一个read/write,就可以实现
7、sprite 的 Mesh type 设置
Tight模式:在生成对应的图片mesh时候,图片周围的空白像素会被裁剪,优点是去除透明的图片,减少空间浪费,缺点是面数增加
Full Rect:矩形的mesh,优点是面数少,但是浪费空间