unity常用API(二)

个人英语不好,所以看的是2018.1 的中文API 部分代码和解释都来源于此文档:原文链接

视频链接:点击链接

[TOC]

鼠标事件函数 OnMouseXX

  1. OnMouseDown : 当用户在 GUIElement 或 Collider 上按下鼠标按钮时,将调用 OnMouseDown。
  2. OnMouseUp : 当用户松开鼠标按钮时,将调用 OnMouseUp。
  3. OnMouseDrag : 当用户单击 GUIElement 或 Collider 并仍然按住鼠标时,将调用 OnMouseDrag。
  4. OnMouseEnter : 当鼠标进入 GUIElement 或 Collider 时调用。
  5. OnMouseExit : 当鼠标不再处于 GUIElement 或 Collider 上方时调用。
  6. OnMouseOver : 当鼠标悬停在 GUIElement 或 Collider 上时,每帧调用一次。
  7. OnMouseUpAsButton : 松开鼠标时,仅当鼠标在按下时所在的 GUIElement 或 Collider 上时,才调用 OnMouseUpAsButton。

Mathf 工具类

Static Variables

  1. Deg2Rad/Rad2Deg : 度到弧度换算常量(只读)/弧度到度换算常量(只读)。
  2. PI : 有名的“3.14159265358979...”值(只读)。
  3. Epsilon : 微小浮点值(只读)。
  4. Infinity : 正无穷大的表示形式(只读)。
  5. NegativeInfinity : 负无穷大的表示形式(只读)。

Static Function

  1. Abs Cos Sin Tan Sqrt Max Min Pow 不在过多阐述

  2. 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);
      }
  3. Clamp01 : 将值限制在 0 与 1 之间并返回值。

  4. ClosestPowerOfTwo : 返回最接近的 2 的幂值。

  5. DeltaAngle : 计算两个给定角度(以度为单位给定)之间的最短差异。

     void Example() {
         Debug.Log(Mathf.DeltaAngle(1080, 90));
     }
     // 输出 90
  6. 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
     }
  7. 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));
         }

    效果如图所示:
    8ftccT.gif

  8. LerpAngle : 与 Lerp 相同,但是在值环绕 360 度时确保值正确插入。

  9. 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是按照比例

    效果如图所示:
    8frLK1.gif

  10. PingPong : 对值 t 进行 PingPong 操作,使它不会大于长度,并且不会小于 0。在 0 与 length 之间来回移动。

     void Update() {
         transform.position = new Vector3(Mathf.PingPong(Time.time, 3), transform.position.y, transform.position.z);
     }

    效果如下:
    8fhUJ0.gif

Input 输入类

  1. GetKey : 在用户按下 name 标识的键时返回 true。
  2. GetKeyDown、GetKeyUp : 只会触发一次 按下 抬起
         Input.GetKeyDown(KeyCode.Space); // 按下空格
  3. GetMouseButton : 返回是否按下了给定的鼠标按钮。(0 左,1 右,2 中)
  4. GetButton : 当按住 buttonName 标识的虚拟按钮时,返回 true。
  5. GetButtonDown GetButtonUp : 在用户按下/抬起由 buttonName 标识的虚拟按钮的帧期间返回 true。
  6. GetAxis : 返回由 axisName 标识的虚拟轴的值。
  7. anyKey : 当前是否有任何键或鼠标按钮处于按下状态?(只读)
  8. anyKeyDown : 在用户按任意键或鼠标按钮后的第一帧返回 true。(只读)
  9. 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 随机数

  1. Random.Range : 返回介于 min [含] 与 max [含] 之间的随机浮点数(只读)。
  2. InitState : 使用种子初始化随机数生成器状态。
  3. ColorHSV : 通过 HSV 和 Alpha 范围生成随机颜色。
  4. insideUnitCircle : 返回半径为 1 的圆形内的随机点(只读)。
  5. insideUnitSphere : 返回半径为 1 的球体内的随机点(只读)。