Unity学习笔记—— 常用脚本函数

1. Awake() Start() Update() FixedUpdate() 

  unity 是单线程的 , 对于unity后台执行脚本,每个脚本的Awake、Update、LateUpdate、FixedUpdate,方法在后台都有一个总汇。把每个

后台的Awake()

{

       脚本0中的Awake();

       脚本1中的Awake();

       脚本2中的Awake();

}

后台的方法 Awake、Update、LateUpdate、FixedUpdate等等都是按照顺序,等所有子脚本中的Awake执行完毕后在去执行 Start 、Update、LateUpdate等等。所以这里也就解释了Unity没有多线程的概念。

后台的Update()

{

       脚本0中的Update();

       脚本1中的Update();

       脚本2中的Update();

}

 

 

Awake函数 在脚本未启用前 会被执行,而Start 在脚本启用后才会被执行 。一般来说 变量对脚本的引用操作等,放在Awake里面 。而第一次的对对象的操作,可放在Start里面

 

2. 向量 

  在二维和三维坐标系中 ,向量 可以标记位置,既有方向又有长度。 速度是有方向的,而速率没有方向,所以说向量也可以表示速度。 一个位置向量 Vector3(5,6,0) ;一个速度向量vector3(4,6,0),表示每小时向 x方向移动 4 ,y方向移动 6。 那么 当前位置向量 Vector3(5,6,0)+速度向量Vector3(4,6,0) 就是 物体一小时后的位置Vector3(9,12,0).

3. 线性插值

   两个 值之间线性插值,在开发一些游戏时很有用。Unity可以使用Lerp()实现插值 功能。线性插值可以计算两个值之间的某个比例的值。 3,5之间,50%的线性差值等于4。 unity有多种不同类型的Lerp() 函数。比如,3-5之间 ,50%的线性插值等于 4 。因为4 处于 3和 5之间的50%。

      Mathf.Lerp(3f,5f,0.5f);  返回 4 

      Color.Lerp() 和 Vector3.Lerp() ,起始 和 终止值 则是 Vector3 ,第三个参数 还是差值比例,Color.Lerp的话是两个颜色按比例的出的混合颜色。 Vector3().Lerp() 则是、

    Vector3 from = new Vector3 (1f , 2f , 3f);

    Vector3 to = new Vector3(5f, 6f , 7f) ;

    Vector3 result = Vector3.Lerp(from , to , 0.75f);

 返回的结果 (4,5,6) 

  同时Lerp() 除了 让一个值随着 时间平滑 的进行变化 。比如让位置平滑的 过度,可以使用 Vector3.Lerp(from , to , 0.75f); 这是每帧变化,如果不用每帧 而是每秒 Vector3.Lerp(from , to , 0.75f * Time.deltaTime).  如果是 light.intensity = Mathf.Lerp(light.intensity , 8f , 0.5f),

 light.intensity 初始值为0 , 然后 4 ,6 ,7 ,7.5 趋近与 8 ,变化速率 会逐渐变慢 。

 如果要让一个值 平滑进行 变化通常 最好 使用 SmoothDamp 函数 。 当你确定 Lerp能达到效果才使用 。

3.1  有关于线性代数 

     向量和缩放  Unity 中 , 是通过 向量移动 2D 和 3D 物体 ,且都是通过操作Transform 完成 。 保存 了position ,rotation ,Scale。

    添加向量 和力 。 在unity里面你可以为刚体创建一个力,例如,模拟一个或几个力的合力到刚体上。因为力可以用向量表示,可以添加一些力量,通过计算合力并把它应用到具有刚体组件的游戏对象上。

     向量乘以标量  。在unity中,你可以使对象向前移动一段距离。但是,当向前移动时,你可能需要设定一个速度。unity提供了一个内置的向量“transform.forward”(向前),所以我们可以把这个向量乘以一个标量(数字)去指定对象能够前进多少距离。这是因为向量“forward”默认大小为1(也称为一个单位向量)。如一开始所说,我们的速度是基于向量,而且大小为1(1米/秒)和方向向前。此,为了增加速度大小并保持同一方向,我们可以将这个方向为“forward”的向量乘以一个数。

     旋转  。有时候你需要可在你的脚本旋转一个游戏对象,你可以这样使用四元数和欧拉角。旋转一个对象,通常使用的语法:“transform.rotation=Quaternion.Eular(x,y,z);”这句话的意思是我们沿着x轴旋转x度,沿着Y轴旋转y度,沿着 z轴旋转z度。

简而言之,这些语句可以指定旋转轴以及角度。我们使用前面的例子,并在“start”中添加一个旋转。

      点积  点积能够真实地告诉我们关于这些向量之间的角度关系,例如,点积为正表明两个向量之间的角度是-90度和90度之间,点积为零表明他们是互相垂直的。在unity中,内置的Vector3类使我们更容易使用点积,点积也可以用来判断向量是否一致或指向相同的方向,如果我们一开始就求出单位向量(即归一化向量。大小减少到1)。因此,如果两个向量在完全相同的方向,点积将为1;如果他们是相反的方向,点积将为-1。这是因为当我们计算点积时,如果两个向量的大小是1,点积将等于这两个之间的余弦角。当角度为0度时,余弦等于1;角度为180度时,余弦为-1,现在更容易如果这些向量是一致的。

     

4.位移 旋转 Translate() Rotate() 

  unity 使用 欧拉角 和 四元数 都可以 设置角度 。

      

5.LookAt()

6. DeltaTime

7.Destroy()

8.Input类 GetButton() GetKey() GetAxis() OnMouseDown() 

9.Invoke()

posted @ 2015-08-29 18:39  bambom  阅读(2620)  评论(0编辑  收藏  举报