打包AssetBundle

参考博客https://blog.csdn.net/chinarc...

Resource.load也可以读取资源,但是不能分包,所以每次更新都需要全量更新,不利于后续开发新版本,推荐使用AssetBundle打包方式。

将需要打包的素材,选择一下AssetBundle名称,如果没有就new一个然后选择,我这里写的是datamodels,图片名为atlas。
截屏2020-07-21 下午4.19.56.png

在Editor文件夹中新建脚本

using System.IO;
using UnityEditor;


public class BuildAssetBundle
{
    [MenuItem("常用工具/打包AssetsBundle")] //菜单栏添加按钮
    static void BuildAllAssetsBundles()
    {
        string folder = "AssetBundles";                                                                             
        if (!Directory.Exists(folder))
        {
            Directory.CreateDirectory(folder);                                                  
        }
        BuildPipeline.BuildAssetBundles("AssetBundles", BuildAssetBundleOptions.None, BuildTarget.StandaloneOSX); 
    }
}

这样标题栏就多了一个打包菜单,此时点击打包就可以生成打包文件了,在Assets文件夹的同级文件夹中,在Unity编辑器里看不到。

加载资源

加载普通的Sprite很简单,如果需要加载Unity内置图集,就麻烦一些。我找到了这个博客http://tsubakit1.hateblo.jp/e...

AssetBundle ab1 = AssetBundle.LoadFromFile("AssetBundles/datamodels"); 

Sprite[] atlas = ab1.LoadAssetWithSubAssets<Sprite>("atlas");

var sprite = Array.Find(atlas, item => item.name == "face_1");

face01 = sprite;

按照路径加载资源,之后用数组,加载子集合的方式,读出sprites,再用数组查找。我的图集名为atlas,需要加载的sprite名为face_1,实测有效。

Unity版本:2019.4.0f1


敲键盘的猫
772 声望131 粉丝

一只热爱科技的猫