unity学习笔记-assetsbundle打包、加载

方法

在程序中安装unity自带的打包工具 assetsbundle,在这里插入图片描述
最低是2018好像,更低的版本要到github 上下源码然后导入到packages里
这里就不多赘述
点击需要打包的资源,在他的inspector里的最下方设置assetsbundle的名称,可以新建自定义都行,整理好之后
打开windows下的assetsbundle browser
在configure 里能看到刚刚整理好的资源已经被assetsbundle识别了,然后就是在build里设置需要打包出来的类型,是pc还是android还是ios,然后点击需要的参数进行build即可
这里需要注意,因为这只是资源的打包,热更新还需要lua代码进行更新的操作。所以当你同时导入assetsbundle和xlua资源的时候,build时,会出现xlua找不到一些组件的报错,这里需要打开genertor这个代码,找到getgenconfig这个方法,里的blocklist,在这里添加报错的那些类型,将他们设置为黑名单, 这样就不会识别到他们,也就不会报错了
在这里插入图片描述

				new List<string>(){"UnityEngine.Light", "shadowRadius"},
                new List<string>(){"UnityEngine.Light", "SetLightDirty"},
                new List<string>(){"UnityEngine.Light", "shadowAngle"},
                new List<string>(){"UnityEngine.Light", "shadowAngle"}

复制进去,保存。然后在在这里插入图片描述
这里clear 再generate一下,打包就能成功了~
另一个方法是删除掉xlua里自带的gen和examples这两个文件,亲测也能跑通

加载打包后的资源

思路-同步

使用assetsbundle自带的api进行调用即可
有两种,一个是同步,一个异步
看需求进行调用
这里用了同步,首先创建一个assetsbundle类,作为启动类,加载streamingassets里打包备份的数据
然后通过这个启动类去加载里面具体的数据,比如gameobject和其他资源
然后进行赋值即可

public GameObject img;
    void Start()
    {
        AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + "ui");
        Sprite clothe = ab.LoadAsset("clothe",typeof(Sprite))as Sprite;
        img.GetComponent<Image>().sprite = clothe;
    }

这里为什么要用streamingassets的路径是因为,如果用assetsbundle默认的打包路径,在项目进行打包的时候,里面的所有资源都不会参与打包,只有streamingassets里的文件能参与打包,所以为了配合后面的热更新我们必须用到这个路径
这里还需要注意一点,assetsbundle这个启动类不能放在方法外去实例化,否则会直接报错,或者这样写也可以
在这里插入图片描述

异步代码

异步的话要用到协程,也就是IEnumerator这个东东
具体的使用如下
创建异步加载的启动类,然后获得里面的资源即可

IEnumerator getAsync(string modelName,string detailName)
    {
        AssetBundleCreateRequest abr = AssetBundle.LoadFromFileAsync(Application.streamingAssetsPath+"/"+modelName);
        yield return abr;
        AssetBundleRequest ar = abr.assetBundle.LoadAssetAsync(detailName, typeof(Sprite));
        yield return ar;
        img.GetComponent<Image>().sprite = ar.asset as Sprite;
    }

然后在start方法里调用这个协程,添加对应的ab包名称和具体的资源名称即可实现加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值