zoukankan      html  css  js  c++  java
  • Unity Scripting Tutorials 要点记录

    (搬运自我在SegmentFault的博客)

    这几天通过Unity官网的Unity Scripting Tutorials的视频学习Unity脚本,观看的过程中做了记录。现在,整理了一下笔记,供自己以后和其他初学者参考。

    Awake和Start

    • Awake首先执行。通常用于建立组件间的引用,初始化。
    • Start在Awake之后和第一次Update之前执行,并且要求脚本enabled。只执行一次。

    Updte和FixedUpdate

    • Update每帧一次,间隔不固定(受帧的处理时间影响),用于处理:
      • 非物理物体的运动
      • 获取输入
      • 定时器
    • FixedUpdate间隔固定,用于调整物理物体(刚体)。

    enabled、setActive和Destroy

    • enabled控制禁用和启用一个组件。禁用GameObject的renderer可以隐藏物体,但碰撞体仍然存在。
    • setActive用于显示和隐藏一个物体。
    • Destroy用于彻底销毁一个GameObject或组件。可以加一个数值表示delay。

    Translate和Rotate

    使用这两个方法控制物体运动。
    Translate对应position:

    transform.Translate(Vector3);   // Amount in each axis to move by
    

    Rotate对应rotation:

    transform.Rotate(Vector3,   // Axis around which to rotate
                     float)     // amount to rotate by
    

    LookAt

    transform.LookAt(target);    
    

    用于移动物体Z轴使之对准目标物体。
    将其绑定到相机上可以实现运动物体的跟踪。

    Lerp

    用于平滑某种转变。

    • 空间移动:

        Vector3.Lerp(Vector3 from,  // 起点。通常应设为当前坐标
                     Vector3 to,    // 终点
                     float t);      // 0~1之间的值。值越大,返回值越接近终点,移动也越快。
      
    • 数值变换:

        Mathf.Lerp(float from, float to, float t);
      
    • 颜色渐变:

        Color.Lerp(Color from, Color to, float t);
      

    GetButton、GetKey和GetAxis

    GetButton和GetKey的区别:

    1. 前者参数为字符串,可以通过设置面板更改字符串和对应按键的映射。
    2. 后者的参数为KeyCode对象。

    GetButton/Up/Down的区别:

    1. Up按键弹起时为true,其他时为false;
    2. 长按时GetButton每帧都返回true,而Down只有第一帧。

    GetAxis(axisName)通过获取某个轴的值来了解用户的输入。

    • axisName是字符串,可以是“Horizontal”、“Vertical”。
    • 返回值为0~1之间的值。
    • 在设置中可以调节轴的参数,gravity控制返回0的速度,sensitivity控制离开0的速度。

    OnMouseDown

    鼠标在Collider或GUI组件上按下时调用该方法。
    同类方法:

    • OnMouseDrag:按住不放
    • OnMouseEnter:进入
    • OnMouseExit:退出
    • OnMouseOver:在上面
    • OnMouseUp:释放
    • OnMouseUpAsButton:按下和释放作用于同一个对象

    Instantiate

    创建prefab的副本,返回对象的引用。
    使用时先用代码创建GameObject的变量,然后回到编辑器界面将prefab拖入变量中。

    Invoke

    调用名叫method的方法:

    Invoke(method, delay);
    

    每隔time重复调用method方法:

    InvokeRepeating(method, delay, time);
    

    取消Invoke:

    CancelInvoke();
    

    取消名叫method的Invoke:

    CancelInvoke(method);
    

    Coroutine

    利用了C#的yield,来实现在多次Update中执行一个行为。
    开始一个Coroutine:

    StartCoroutine(IEnumerator routine);
    

    或者接受一个string参数表示方法的返回IEnumerator的方法的名字,后面跟着参数。
    例:

    StartCoroutine(Func(param));
    StartCoroutine("Func", param);
    

    停止一个Coroutine,用StopCoroutine。同样有两种形式。

    Quaternion

    用来表示旋转的类。讲了三个内容:

    1)

    LookRotation(Vector3 forward);
    

    返回使物体转向forward方向的Quaternion。

    2)

    Slerp(Quaternion from, Quaternion to, float t);
    

    旋转角度。相比Lerp,在中间时快,两头时慢。

    3)

    Quaternion.identity是一个静态变量,表示没有旋转。

  • 相关阅读:
    GetDlgItem
    vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
    C #中的几个线程同步对象方法 zz
    vc中调用exe的方法
    函数PlaySound和sndPlaySound的用法
    Radio Button的使用
    用Event实现线程同步
    C++学习随笔之九:类和动态内存分配
    C++学习随笔之七:对象和类
    C++学习随笔之二:数据处理
  • 原文地址:https://www.cnblogs.com/CodeCabin/p/3959585.html
Copyright © 2011-2022 走看看