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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM