Unity学习笔记(持续更新)

Random

在最大值与最小值之间取一个整数

1
Random.range("0","19");

坐标移动

物体坐标 = Vector2.MoveTowards(当前坐标,移动坐标,移动速度)

1
2
public float speed = 1;
transfrom.position = Vector2.MoveTowards(transfrom.position,movePos.position,speed)

线性差值(坐标移动)

原来坐标 = vector3.Lerp(原来的坐标,需要移动到的坐标,差值);

差值为迟缓跟随移动的时间(适用于摄像机跟随)

1
2
3
4
5
6
7
8
9
    public Transform target;
    public float smoothing;
void Follow()
{
    if(target != null)
    {
        transform.position = vector3.Lerp(transform.position,target,smoothing);
    }
}

消除过度摩擦值

新建New Physics Material 2D 文件,unity界面内修改其摩擦力为0,后面将其拖到指定的碰撞体上。

Layer

layer

处理物体碰撞。

打开Unity面板>Edit>Project Settings>Physics 2D>Layer Collision Matrix .此处可设置物体之间是否酉碰撞效果

Sorting layer

处理显示顺序,图层顺序。

Unity面板中点击指定素材>Sprite Renderer> Additional Settings>Soriting Layer>创建不同名称的排列顺序并将其赋予到素材上

复制对象并移动

1
2
3
4
5
public static Object Instantiate (Object original);
public static Object Instantiate (Object original, Transform parent);
public static Object Instantiate (Object original, Transform parent, bool instantiateInWorldSpace);
public static Object Instantiate (Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate (Object original, Vector3 position, Quaternion rotation, Transform parent);

参数

original 要复制的现有对象。
position 新对象的位置。
rotation 新对象的方向。
parent 将指定给新对象的父对象。
instantiateInWorldSpace When you assign a parent Object, pass true to position the new object directly in world space. Pass false to set the Object’s position relative to its new parent.

Vector2.Distance

返回 ab 之间的距离。

1
`Vector2.Distance(a,b)`  `(a-b).magnitude` 相同。

材质

材质处更改Rendering Mode

Opaque Cutout Fade Transparent
不透明 镂空,用于完全透明或完全不透明大的物体 渐变 用于半透明或全透明的的物体

将sharder拖拽到指定材质,再将材质赋予到指定的游戏物体

摄像机

深度值:用于排列显示图层的顺序

投影: 透视对应着3D,正交为2D视角

视野/大小:用于放大或缩小视距,有放大镜或缩小镜的感觉

裁剪平面:通常只调节远 这一选项,为设置视野最大渲染物体的范围

Viewport矩形:

W H X Y
±0.5为左半屏 。1为全屏 ±0.5为下半屏,1为全屏 ±0.5为右半屏 ±0.5为上半屏

光源

Light 里设置光线的各种参数。

类型:点 --- 以光源为中心向周围一个圆进行光源扩散

​ 聚光 --- 以光源为圆锥体顶点,向一方位投射圆柱体积的光线

剔除遮罩:用于去除场景内不想被光线照射的物体

UNITY优化

TILEMAP

使用tliemap制作场景时,过多的自带刚体的GameObject会大大减低程序的运行效率,正确做法是制作好场景后,为其添加,Composite Collider 2D ,并且将Rigidbody 2D 的Body Type选项改为 静态(static),再勾选上Tilemap Collider 2D 的Used By Composite。这样一来绘制的tilemap就会共享一个整体碰撞框,以提升运行效率。

updatedupdated2022-09-282022-09-28