【Unity】AssteBundle打包

資源管理導(dǎo)圖

資源管理.png

準(zhǔn)備工作

存儲等下需要加載的資源
  • 設(shè)置Asset Labels(Unity右下角)
    • Cube ------ cubeprefab
    • mat ------- cubemat
    • pic ------- cubetexture

待會加載資源就是靠標(biāo)簽加載的

一鍵打包的實現(xiàn)

using UnityEngine;
using UnityEditor;
using System.IO;

public class BuildAssetBundle : Editor
{
    [MenuItem("AssetBundle/Build/Windows")]
    public static void BuildWindows()
    {
        //AssetBundle的存儲路徑
        string path = Application.dataPath + "/AssetBundle/Windows/";
        //如果路徑不存在
        if (!File.Exists(path))
        {
            //創(chuàng)建路徑
            Directory.CreateDirectory(path);
        }
        //打包
        BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
        //打印
        Debug.Log("打包成功");
    }
}
一鍵打包效果圖.gif

打包完成后刪掉"CubeAsset"文件夾(其實刪不刪無所謂誓琼,主要是確認(rèn)資源是從AssetBundle里面加載出來的)

AssetBundle文件夾的信息


AssetBundle.png

加載紋理圖(無依賴關(guān)系)

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class LoadTexture : MonoBehaviour
{
    private string path;
    public string bundleName;
    public string assetName;

    private void Awake()
    {
        path = "file://" +Application.dataPath + "/AssetBundle/Windows/";
    }

    private IEnumerator Start()
    {
        WWW www = new WWW(path + bundleName);
        //下載
        yield return www;
        //獲取AssetBundle
        AssetBundle ab = www.assetBundle;
        //加載資源
        Texture t = ab.LoadAsset(assetName) as Texture;
        //放圖片
        GetComponent<RawImage>().texture = t;
        //釋放資源
        ab.Unload(false);
    }
}

bundleName和assetNam根據(jù)一鍵打包的結(jié)果名稱和原圖片資源名稱決定

加載圖片效果圖.gif

加載預(yù)設(shè)體(有依賴關(guān)系)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoadCube : MonoBehaviour
{
    private string path;
    /// <summary>
    /// 資源的Bundle名稱
    /// </summary>
    public string bundleName;
    /// <summary>
    /// 資源本身的名稱
    /// </summary>
    public string assetName;
    /// <summary>
    /// 版本號
    /// </summary>
    public int version = 0;

    private void Awake()
    {
        path = "file://" + Application.dataPath + "/AssetBundle/Windows/";

    }

    private IEnumerator Start()
    {
        //下載整個資源管理系統(tǒng)的說明文件
        WWW www = WWW.LoadFromCacheOrDownload(path+"Windows",version);
        //下載
        yield return www;
        //獲取到說明文件的Bundle
        AssetBundle mani = www.assetBundle;
        //加載Mani文件
        AssetBundleManifest manifest = mani.LoadAsset("AssetBundleManifest") as AssetBundleManifest;
        //查當(dāng)前要加載的資源的所有依賴
        string[] deps = manifest.GetAllDependencies(bundleName);
        //釋放ManiBundle
        mani.Unload(false);
        //聲明依賴的Bundle數(shù)組
        AssetBundle[] depBundles = new AssetBundle[deps.Length];
        //依次下載依賴
        for (int i = 0; i < depBundles.Length; i++)
        {
            //下載依賴
            www = WWW.LoadFromCacheOrDownload(path + deps[i], version);
            //等待下載
            yield return www;
            //獲取Bundle
            depBundles[i] = www.assetBundle;
        }
        //下載最終的資源bundle
        www = WWW.LoadFromCacheOrDownload(path + bundleName, version);
        //等待
        yield return www;
        //獲取Bundle 
        AssetBundle realBundle = www.assetBundle;
        //獲取資源
        GameObject prefab = realBundle.LoadAsset(assetName) as GameObject;
        //生成對象
        Instantiate(prefab);
        //釋放Bundle
        realBundle.Unload(false);
        for (int i = 0; i < deps.Length; i++)
        {
            depBundles[i].Unload(false);
        }
    }
}
加載預(yù)設(shè)體效果圖.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胧辽,一起剝皮案震驚了整個濱河市冗茸,隨后出現(xiàn)的幾起案子终吼,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡定嗓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門萍桌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宵溅,“玉大人,你說我怎么就攤上這事上炎∈崖撸” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵藕施,是天一觀的道長寇损。 經(jīng)常有香客問我,道長裳食,這世上最難降的妖魔是什么矛市? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮诲祸,結(jié)果婚禮上浊吏,老公的妹妹穿的比我還像新娘。我一直安慰自己救氯,他們只是感情好找田,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著径密,像睡著了一般午阵。 火紅的嫁衣襯著肌膚如雪躺孝。 梳的紋絲不亂的頭發(fā)上享扔,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天底桂,我揣著相機與錄音,去河邊找鬼惧眠。 笑死籽懦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氛魁。 我是一名探鬼主播暮顺,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秀存!你這毒婦竟也來了捶码?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤或链,失蹤者是張志新(化名)和其女友劉穎惫恼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澳盐,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡祈纯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叼耙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腕窥。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖筛婉,靈堂內(nèi)的尸體忽然破棺而出簇爆,到底是詐尸還是另有隱情,我是刑警寧澤爽撒,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布冕碟,位于F島的核電站,受9級特大地震影響匆浙,放射性物質(zhì)發(fā)生泄漏安寺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一首尼、第九天 我趴在偏房一處隱蔽的房頂上張望挑庶。 院中可真熱鬧,春花似錦软能、人聲如沸迎捺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凳枝。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岖瑰,已是汗流浹背叛买。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹋订,地道東北人率挣。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像露戒,于是被迫代替她去往敵國和親椒功。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容