unity常用API(二)
个人英语不好,所以看的是2018.1 的中文API 部分代码和解释都来源于此文档:原文链接
视频链接:点击链接
[TOC]
鼠标事件函数 OnMouseXX
- OnMouseDown : 当用户在 GUIElement 或 Collider 上按下鼠标按钮时,将调用 OnMouseDown。
- OnMouseUp : 当用户松开鼠标按钮时,将调用 OnMouseUp。
- OnMouseDrag : 当用户单击 GUIElement 或 Collider 并仍然按住鼠标时,将调用 OnMouseDrag。
- OnMouseEnter : 当鼠标进入 GUIElement 或 Collider 时调用。
- OnMouseExit : 当鼠标不再处于 GUIElement 或 Collider 上方时调用。
- OnMouseOver : 当鼠标悬停在 GUIElement 或 Collider 上时,每帧调用一次。
- OnMouseUpAsButton : 松开鼠标时,仅当鼠标在按下时所在的 GUIElement 或 Collider 上时,才调用 OnMouseUpAsButton。
Mathf 工具类
Static Variables
- Deg2Rad/Rad2Deg : 度到弧度换算常量(只读)/弧度到度换算常量(只读)。
- PI : 有名的“3.14159265358979...”值(只读)。
- Epsilon : 微小浮点值(只读)。
- Infinity : 正无穷大的表示形式(只读)。
- NegativeInfinity : 负无穷大的表示形式(只读)。
Static Function
Abs Cos Sin Tan Sqrt Max Min Pow 不在过多阐述
Clamp : 将值限制在最小浮点值与最大浮点值之间。
void Update() { // 小于1.0 返回1.0 大于3.0 返回3.0 不然就返回time transform.position = new Vector3(Mathf.Clamp(Time.time, 1.0F, 3.0F), 0, 0); }
Clamp01 : 将值限制在 0 与 1 之间并返回值。
ClosestPowerOfTwo : 返回最接近的 2 的幂值。
DeltaAngle : 计算两个给定角度(以度为单位给定)之间的最短差异。
void Example() { Debug.Log(Mathf.DeltaAngle(1080, 90)); } // 输出 90
Floor : 返回小于或等于 f 的最大整数。
void Example() { Debug.Log(Mathf.Floor(10.0F)); // Prints 10 Debug.Log(Mathf.Floor(10.2F)); // Prints 10 Debug.Log(Mathf.Floor(10.7F)); // Prints 10 Debug.Log(Mathf.Floor(-10.0F)); // Prints -10 Debug.Log(Mathf.Floor(-10.2F)); // Prints -11 Debug.Log(Mathf.Floor(-10.7F)); // Prints -11 }
Lerp : 在 a 与 b 之间按 t 进行线性插值。
private void Start() { cube.position = new Vector3(0,0,0); } private void Update() { float x = cube.position.x; float newx = Mathf.Lerp(x, 10, 0.1f); cube.position = new Vector3(newx,0,0); //print(Mathf.Lerp(a,b,t)); }
LerpAngle : 与 Lerp 相同,但是在值环绕 360 度时确保值正确插入。
MoveTowards : 将值 current 向 target 靠近。这本质上与 Mathf.Lerp 相同,但是该函数确保速度不超过 maxDelta。 maxDelta 为负值时将值推离 /target/。
private void Start() { cube.position = new Vector3(0,0,0); } private void Update() { float x = cube.position.x; float newx = Mathf.MoveTowards(x, 10, 0.1f); cube.position = new Vector3(newx,0,0); //print(Mathf.Lerp(a,b,t)); } // MoveTowards 是匀速 Lerp是按照比例
PingPong : 对值 t 进行 PingPong 操作,使它不会大于长度,并且不会小于 0。在 0 与 length 之间来回移动。
void Update() { transform.position = new Vector3(Mathf.PingPong(Time.time, 3), transform.position.y, transform.position.z); }
Input 输入类
- GetKey : 在用户按下 name 标识的键时返回 true。
- GetKeyDown、GetKeyUp : 只会触发一次 按下 抬起
Input.GetKeyDown(KeyCode.Space); // 按下空格
- GetMouseButton : 返回是否按下了给定的鼠标按钮。(0 左,1 右,2 中)
- GetButton : 当按住 buttonName 标识的虚拟按钮时,返回 true。
- GetButtonDown GetButtonUp : 在用户按下/抬起由 buttonName 标识的虚拟按钮的帧期间返回 true。
- GetAxis : 返回由 axisName 标识的虚拟轴的值。
- anyKey : 当前是否有任何键或鼠标按钮处于按下状态?(只读)
- anyKeyDown : 在用户按任意键或鼠标按钮后的第一帧返回 true。(只读)
- mousePosition : 鼠标当前的像素坐标位置。(只读)
Vector 相关
变量 | 解释 |
---|---|
down | 用于编写 Vector2(0, -1) 的简便方法。 |
left | 用于编写 Vector2(-1, 0) 的简便方法。 |
one | 用于编写 Vector2(1, 1) 的简便方法。 |
right | 用于编写 Vector2(1, 0) 的简便方法。 |
up | 用于编写 Vector2(0, 1) 的简便方法。 |
zero | 用于编写 Vector2(0, 0) 的简便方法。 |
magnitude | 返回该向量的长度。(只读) |
normalized | 返回 magnitude 为 1 时的该向量。(只读) |
sqrMagnitude | 返回该向量的平方长度。(只读) |
x | 向量的 X 分量。 |
y | 向量的 Y 分量。 |
void Start() { Vector2 a = new Vector2(2, 2); Vector2 b = new Vector2(3, 4); Vector2 c = new Vector2(3, 0); print(Vector2.Angle(a, b)) // 8.130115 返回 from 与 to 之间的无符号角度(以度为单位)。 print(Vector2.Angle(a, c)); // 45 print(Vector2.ClampMagnitude(c, 2)); // 2.0 0.0 返回 vector 的副本,其大小被限制为 /maxLength/。 print(Vector2.Distance(b, c)); //4 返回 a 与 b 之间的距离。 print(Vector2.Lerp(a, b, 0.5f));//2.5 3 在向量 a 与 b 之间按 t 进行线性插值。 print(Vector2.LerpUnclamped(a, b, 0.5f));//2.5 3 在向量 a 与 b 之间按 t 进行线性插值。 print(Vector2.Lerp(a, b, 2f));//b 3,4 print(Vector2.LerpUnclamped(a, b, 2f)); // 4.0 6.0 print(Vector2.Max(a, b)); // 3.0 4.0 返回由两个向量的最大分量组成的向量。 print(Vector2.Min(a, b)); //2.0 2.0 }
加减乘除 运算符重载 不再过多阐述
二维和三维 大体相等 ,不再过多阐述
Random 随机数
- Random.Range : 返回介于 min [含] 与 max [含] 之间的随机浮点数(只读)。
- InitState : 使用种子初始化随机数生成器状态。
- ColorHSV : 通过 HSV 和 Alpha 范围生成随机颜色。
- insideUnitCircle : 返回半径为 1 的圆形内的随机点(只读)。
- insideUnitSphere : 返回半径为 1 的球体内的随机点(只读)。