2017年11月17日 星期五

Unity程式設計初體驗(五)-動畫簡易控制程式解析


在Asset Store 下載Zombie 0_1,找到之後把它滙入(import),並選擇在Scenes資料夾中的Demo的場景範例,點後後可以選定Main Camera物件,在右邊的Inspector可以檢視Main Camera物件的相關內容,在下方有一個PlayGUI(Script)的視窗,內部儲存腳本的變數,有一個是Trnsforms,另一個是GUI Contents,如下圖。

回到專案的目錄,在Asset子目錄下,可以找到PlayGUI.cs的檔案,打開來其程式碼如下圖(僅摘錄部份內容):

public class PlayGUI : MonoBehaviour {
public Transform[] transforms;

public GUIContent[] GUIContents;

private Animator[] animator;

private string currentState = "";
:
:
:
}
上圖程式中可以看到public和private兩個關鍵詞,分別表示變數成員是"公開的"表示可以由外部程式來存取和"私有的"表示只能自己使用。因此在Unity的介面中,可以看到Transforms和GUI Contents表示Transform和GUIContent都是以陣列方式呈現,如下圖。


在PlayGUI 類別中,定義一個Start()函式,這是一個初始化的函式,在這個函式中,會讀取上圖中Trnsforms的內容,利用把它放置GetComponent()函式來取得元件的動畫資訊,存放到animator的變數中。在這裏transforms.Length會等於1,如上圖所示,只有一個元件就是Element 0,內容就是Zombie_0_1 (Transform),也就是畫面中的動畫。

// Use this for initialization
void Start () {
    animator = new Animator[transforms.Length];
for (int i = 0; i < transforms.Length; i++) {
animator[i] = transforms[i].GetComponent();
}
}

6 則留言:

  1. 在public Transform[] transforms;和 public GUIContent[] GUIContents;不知道怎麼用

    回覆刪除
  2. 動畫程式是要從哪個地方設定

    回覆刪除
  3. public Transform[] transforms;

    public GUIContent[] GUIContents;

    我不明白這兩個是甚麼意思

    回覆刪除