Unity AssetBundle 的使用

比如要打包一個圖片,選擇這個圖片,在Inspector視圖的最下面AssetBundle 后選擇New 輸入一個名字对扶,
編輯一個腳本放到Editor文件夾中

using System.IO;
using UnityEditor;
public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        BuildPipeline.SetAssetBundleEncryptKey("0123456789abcdef");//16個加密字符
        string assetBundleDirectory = UnityEngine.Application.streamingAssetsPath;
        if (!Directory.Exists(assetBundleDirectory))
        {
            Directory.CreateDirectory(assetBundleDirectory);
        }
        BuildPipeline.BuildAssetBundles(assetBundleDirectory,
                                        BuildAssetBundleOptions.ChunkBasedCompression|
                                        BuildAssetBundleOptions.EnableProtection,
                                        BuildTarget.StandaloneWindows);
        
    }
}

然后在Assets欄下點Build AssetBundles 按鈕就會將圖片打包到StreamingAssets文件夾下
使用方法:

//加載資源
        UnityEngine.AssetBundle.SetAssetBundleDecryptKey("0123456789abcdef");//16個字符
        var myLoadedAssetBundle
            = AssetBundle.LoadFromFile(System.IO.Path.Combine(Application.streamingAssetsPath, "ab"));
        if (myLoadedAssetBundle == null)
        {
            Debug.Log("Failed to load AssetBundle!");
            return;
        }
        var jpg = myLoadedAssetBundle.LoadAsset<Texture>("abc");
        this.GetComponent<RawImage>().texture = jpg;

常用的三種壓縮方式及區(qū)別:
1.BuildAssetBundleOptions.None: 使用LZMA算法壓縮月而,壓縮的包更小,但是加載時間更長挖滤。使用之前需要整體解壓崩溪。一旦被解壓,這個包會使用LZ4算法重新壓縮斩松。使用資源的時候不需要整體解壓伶唯。在下載的時候可以使用LZMA算法,一旦它被下載了之后惧盹,它會使用LZ4算法保存到本地上乳幸。
2.BuildAssetBundleOptions.UncompressedAssetBundle: 不壓縮,包大钧椰,加載快反惕。
3.BuildAssetBundleOptions.ChunkBasedCompression: 使用LZ4算法壓縮,壓縮率沒有LZMA高演侯,但是我們可以加載指定資源而不需要解壓全部姿染。
使用LZ4算法壓縮,可以獲得可以跟不壓縮相媲美的加載速度秒际,而且比不壓縮文件要小悬赏。目前AB包加密需要LZ4壓縮格式,也就是上面提到的ChunkBasedCompression方式娄徊。
加密方法(官方有相應的加密文檔):
1.構(gòu)建AB包時闽颇,先指定本次build所使用的加密秘鑰,密鑰長度為16為字符(128bit):
BuildPipeline.SetAssetBundleEncryptKey("0123456789abcdef");
然后指定BuildAssetBundleOptions 包含:ChunkBasedCompression和EnableProtection:
BuildPipeline.BuildAssetBundles(assetbundleBuildPath, BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.EnableProtection, EditorUserBuildSettings.activeBuildTarget);
通過指定密鑰為null來清除秘鑰:BuildPipeline.SetAssetBundleEncryptKey(null);

另外一種簡單的加密方式:
使用offest加密
原理就是對AssetBundle的二進制文件添加一些字符寄锐,來達到加密的目的

public static void ABOffsetEncryption(string fileFile)
{
byte[] oldData = File.ReadAllBytes(fileFile);
int newOldLen = 8 + oldData.Length;//這個空字節(jié)數(shù)可以自己指定,示例指定8個字節(jié) 
var newData = new byte[newOldLen];
for (int tb = 0; tb < oldData.Length; tb++)
{
newData[8+ tb] = oldData[tb];
}
FileSt
ream fs = File.OpenWrite(fileFile);//打開寫入進去
fs.Write(newData, 0, newOldLen);
fs.Close();
}

解密:unity官方提供的AB包加載API兵多,有提供根據(jù)Offset進行加載AB
AssetBundle abBundle = AssetBundle.LoadFromFile(assetBundleMapPath,0,8);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尖啡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子剩膘,更是在濱河造成了極大的恐慌衅斩,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怠褐,死亡現(xiàn)場離奇詭異畏梆,居然都是意外死亡,警方通過查閱死者的電腦和手機奈懒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門奠涌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人磷杏,你說我怎么就攤上這事溜畅。” “怎么了极祸?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵慈格,是天一觀的道長。 經(jīng)常有香客問我贿肩,道長峦椰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任汰规,我火速辦了婚禮汤功,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溜哮。我一直安慰自己滔金,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布茂嗓。 她就那樣靜靜地躺著餐茵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪述吸。 梳的紋絲不亂的頭發(fā)上忿族,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音蝌矛,去河邊找鬼道批。 笑死,一個胖子當著我的面吹牛入撒,可吹牛的內(nèi)容都是我干的隆豹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茅逮,長吁一口氣:“原來是場噩夢啊……” “哼璃赡!你這毒婦竟也來了判哥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤碉考,失蹤者是張志新(化名)和其女友劉穎塌计,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豆励,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡夺荒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年瞒渠,在試婚紗的時候發(fā)現(xiàn)自己被綠了良蒸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡伍玖,死狀恐怖嫩痰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窍箍,我是刑警寧澤串纺,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站椰棘,受9級特大地震影響纺棺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邪狞,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一祷蝌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帆卓,春花似錦巨朦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吁津,卻和暖如春棚蓄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碍脏。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工梭依, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潮酒。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓睛挚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親急黎。 傳聞我的和親對象是個殘疾皇子扎狱,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

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