1. 程式人生 > >實力封裝:Unity打包AssetBundle(四)

實力封裝:Unity打包AssetBundle(四)

文件夾 鼠標 菜單 註意 pre 路徑 一點 依然 uid

→→前情提要:窗口初現←←

讓用戶選擇要打包的文件

時至今日,我們選擇打包文件的方式依然是在Project面板或Hierarchy面板中用鼠標點選。現在既然有了窗口,我們自然希望可以將所有文件羅列在窗口中,然後在窗口中進行選擇,今天就來實現這一功能。

既然要顯示所有的文件,我們就必須首先知道工程目錄下都有哪些文件,並獲取它們的路徑。網上關於遞歸獲取某一目錄下的所有文件的例子有很多,這裏就不細說了,但是要註意過濾掉.meta的文件,這是Unity為每個資源文件自動生成的,裏面存儲了資源的GUID,Unity就是通過這個GUID來引用資源的。Unity的資源文件都放在Assets文件夾下,打包的API也只能打包這個文件夾下的文件。

我們將獲取出來的所有資源文件的相對路徑(Assets開頭的文件路徑)都存放到一個string鏈表中。這個鏈表可以按如下定義,此外還需要定義一個和鏈表同樣長度的bool型數組,以及一個Vector2類型的向量↓↓

  List<string> assetsPath = new List<string> ();
  bool[] flags = new bool[assetsPath.Count];
  Vector2 scallPos;

然後在OnGUI函數中加入如下代碼↓↓

  
  GUILayout.Space (20);
 GUILayout.Label("Select the Files you want to package:");
 scallPos = EditorGUILayout.BeginScrollView (scallPos, GUILayout.Height(300));
 foreach (int i = 0; i < assetsPath.Count; i++) {
     string lable = Path.GetFileName (assetsPath[i]);
     flags[i] = EditorGUILayout.ToggleLeft (lable, flags[i]);
 }
 EditorGUILayout.EndScrollView ();

點擊菜單運行窗口,已經能看到效果了,還不錯。
技術分享圖片

幾點說明↓↓

  1. GUILayout.Space(int)用來畫出一個空白區域,主要是為了讓控件之間間隔大一點,不至於太擠。

  2. EditorGUILayout.BeginScrollView可以創建一個滾動視圖,必須和EndScrollView一起使用,當資源文件很多很多的時候,讓它們滾動起來是很有必要的。BeginScrollView的第一個參數是一個Vector2向量,表示滾動位置,同時返回值也必須賦回給同一個變量,否則視圖是滾不動的,這也就是為什麽要定義一個scrollPos變量的原因。第二個參數給滾動區域限制了一個高度。

  3. Path.GetFileName用來獲取一個路徑中的文件名(包括擴展名),Path類還有很多關於路徑操作的靜態函數,有興趣可以自己挖掘。

  4. EditorGUILayout.ToggleLeft創建一個框在左,文字在右的復選框。第一個參數是框旁邊要顯示的文字,第二個參數是一個bool變量,用來表示復選框的選中狀態。同樣,函數返回值也要付給這個參數,否則復選框是不能選擇的,所以我們要定義一個和assetsPath同樣長的bool型數組。

基本的操作就這些了,有了這些基礎,做出其他花樣就不是問題了。

下期見啦~

實力封裝:Unity打包AssetBundle(四)