【自用】Unity基礎(一)

Animation,Sound&Effects

Sprite Renderer

  1. 用來在Scene中渲染顯示出圖像

在這裏插入圖片描述

2.若Sprite Renderer組件未被激活,或則其中的Sprite屬性爲None,則在Scene中都不會渲染顯示出圖像來。
在這裏插入圖片描述

3.組件屬性

  • Spirit
    Sprite遊戲對象就是通過Sprite Renderer控件中的Sprite屬性選擇一個Sprite對象來渲染顯示在Scene視圖中的。
    在這裏插入圖片描述
    效果如下圖所示:在這裏插入圖片描述

  • Color

  • 默認值爲#FFFFFFFF,即Spirit顯示爲原色。可以通過設置Color屬性改變Spirit的整體顏色。

  • Flip

有X和Y兩個勾選項,可以通過勾選Flip屬性對sprite沿X和Y方向進行翻轉,這樣的反轉方式只會影響Sprite本身,不會翻轉其碰撞體和其子對象。而通過Transform控件的Rotation屬性的X和Y軸實現翻轉效果的方式,就會同時翻轉其碰撞體和其子物體。
例如勾選Y
在這裏插入圖片描述

  • Material

默認爲Sprites-Default材質,此時在Scene中Sprite不會受到光源系統的影響。可以通過 Material屬性 使用其他的材質來達到不同的渲染效果,並能受到光源系統的影響。

  • Sorting Layer

通過該屬性,設置多個分類圖層,其中高圖層的Spirite會被先渲染,然後低圖層的Spirite被後渲染,並能覆蓋高圖層的Spirite,而顯示在其上方。

下拉Sorting Layer屬性,選擇 Add Sorting Layer 添加分類圖層。
在這裏插入圖片描述

添加兩個分類圖層,命名爲high和low,注意high在low的上方,high爲高圖層,low爲低圖層。

在這裏插入圖片描述

此時再下拉Sorting Layer屬性,出現了剛纔添加的兩個分類圖層。把荷花設置爲high圖層,紙飛機設置爲low圖層。就可以看到低圖層爲紙飛機,覆蓋了先渲染的高圖層荷花。

在這裏插入圖片描述

  • Order in Layer

同一個圖層的多個Sprite可以通過` Order in Layer屬性,設置int類型的數字進行渲染順序的排序。其中數字越小的Sprite會被先渲染,數字越大的Sprite被後渲染,並能覆蓋數字越小的Sprite而顯示在其上方(數字大的在上面)。
(1) 如果在Sorting Layer屬性中,荷花和紙飛機屬於同一圖層,在Order In Layer屬性中,把荷花設置爲0,紙飛機設置爲1,那麼紙飛機顯示在荷花上邊。
(2) 如果荷花和紙飛機在Sorting Layer屬性中,屬於同一個圖層;又在Order in Layer屬性中,爲相同的數字呢?那麼先放入場景的Sprite先被渲染,後放入場景的Sprite後被渲染而顯示在上方。

ForceMode

給具有RigidBody控件的物體添加力,常常使用的方法就是void Rigidbody.AddForce();有四個重載:

  • void Rigidbody.AddForce(vector3 Force);
  • void Rigidbody.AddForce(Vector3 Force,ForceMode mode);
    -void Rigidbody.AddForce(float x,float y,float z)
  • void Rigidbody.AddForce(float x,float y,float z,ForceMode mode)
    其中Force Mode有四種形式:
  • Force Mode..Acceleration(給物體添加一個持續的加速度,但是忽略其質量,採用默認質量1)
  • ForceMode.Force(給物體添加一個持有的力,並使用其質量)
  • ForceMode.Impulse(給物體添加一個瞬間的力並使用其質量)
  • ForceMode.VelocityChange(給物體添加一個瞬間的加速度,但是忽略其質量)

Invoke和InvokeRepeating

  • void Invoke(string methodName, float time)只執行一次

第一個參數是方法名,第二個參數是延時多少秒。

  • void InvokeRepeating(string methodName, float time, float repeatRate)重複執行

其中第二個參數是延遲多長時間後開始,第三個參數是每次執行間隔多少秒數。

查找場景中的一個物體

  • GameObject.find("Player")通過場景裏面的物體名子或者一個路徑直接獲取遊戲對象。
    如果你的這個GameObject的acive爲 false的話。那麼你用GameObject.Find()是無法獲取它的對象的。如果對象都獲取不到,那麼對象身上腳本、組件等都是獲取不到的,變成了沒有意義的對象。

  • transform.Find(「Player」)`
    如果你的這個GameObject的acive爲 false的話。用 transform.Find()也可以找到。

  • GameObject.FindGameObjectsWithTag(「tag」)
    通過tag找,返回一個 或者 一個數組。

  • GameObject.FindWithTag(「tag」)
    通過tag,返回一個物體。

  • Object.FindObjectOfType
    根據一個類型返回一個Object

  • Object.FindObjectsOfType

  • 根據一個類型返回Object,返回一個 或者 一個數組。