Assetbundle打包及加載入門詳解(一)

Assetbundle是unity的一種加載方式。這種加載可以從互聯網上或者本地的文件夾中加載。

要求被加載的文件必須是Assetbundle定義的格式

首先製作Assetbundle:

在project的Editor文件夾下創建新腳本CreateAssetbundles

腳本內容如下:

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;

public class CreateAssetbundles  {
    [MenuItem("AssetsBundle/Build AssetBundles")]
    static void BuildAllAssetBundles()//進行打包
    {
        string dir = "AssetBundles";
        //判斷該目錄是否存在
        if (Directory.Exists(dir) == false)
        {
            Directory.CreateDirectory(dir);//在工程下創建AssetBundles目錄
        }
        //參數一爲打包到哪個路徑,參數二壓縮選項  參數三 平臺的目標
      
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
    }
}


腳本編寫後會看到菜單欄裏多了一項assetsbundle,如下圖:

這個選項就是用來把AssetBundles文件生成,並且放到AssetBundles這樣一個文件夾裏。

接下來說如何把一些objects定義爲AssetBundle的文件。

首先新建一個cube,我們會看到在inspector面板的最下方有一個AssetBundle的設置選項,如下圖:

我們看到下面有兩個箭頭處,第一個就是給這個cube定義AssetBundle的名字,自定義就可以了,第二個箭頭處是給這個AssetBundle的物體加後綴格式(就像圖片的.jpg .png這些,只是這裏是可以自定義任何格式,本案例裏定義的名字爲mod,後綴名爲mo)

當這些都選擇好之後,去菜單裏點擊剛纔我們製作的那個build assetbundles按鈕,如下圖:

之後我們就會在代碼設置的路徑下看到創建的文件夾

 

打開文件夾會看到裏面有AssetBundles和AssetBundlesmanifest文件以及剛爲cube命名的的mod的文件。AssetBundles和AssetBundlesmanifest文件這兩個文件可以理解爲是整個文件夾的老大。所有的maninfest文件都可以用記事本打開,在這個文件裏有着被打包的文件的一些信息。

至此,所有的打包任務都完成了。接下來講解,如何加載出打包的文件。

加載的方式有三種,分別是從硬盤中加載、從網絡上加載、從內存中加載。

先講從硬盤中加載,因爲我的案例是放在我電腦下的這個硬盤的,所以用硬盤中加載。

新建一個腳本,掛在到一個物體上,然後運行就可以了。

腳本如下:

using UnityEngine;
using System.Collections;

public class LoadFromFileExample : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/mod.mo");
       
      
        Object[] obj = ab.LoadAllAssets<GameObject>();//加載出來放入數組中
        //創建出來
        foreach (Object o in obj)
        {
            Instantiate(o);
            Debug.Log(o.name);
        }
        ab.Unload(false);
}

運行結果:

至此加載也完成了。但是發現一個問題,就是物體的材質丟失了,原因是物體的材質沒有被打包成assetbundle,而且也沒有加載出來,這個在assetbundle中稱爲依賴關係。本節只寫,如果打包,如何從硬盤加載,至於依賴關係和其他加載方法且聽下回分解。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章