AssetBundle基础(新手)

一、AssetBundle是什么

  • 特定于平台的资产压缩包,优点类似于压缩文件。
  • 资产包括:模型、贴图、预设体、音效、材质等 。C#脚本不能打进AB包,只能通过包中信息加载场景中的脚本,这也是为什么使用Lua热更新脚本的原因。

二、AssetBundle有什么作用:

  • 相对于Resources下的资源AB包更好的管理资源;

    • 1.Resources打包时定死(只读),无法修改文件夹中的内容;

    • 2.AB包的存储位置可自定,压缩方式自定义,后期可以动态更新;

  • 减少包体大小

    • 1.压缩资源
    • 2.减少初始包的大小(大场景中场景可以分包加载)
  • 实现热更新

    • 1.资源热更新;

    • 2.脚本热更新;


三、生成AB包资源文件

AB包生成的文件:

  • AB包文件

    • 资源文件
  • manifest文件(AB包信息文件)

    • manifest文件 当加载信息时,提供了关键信息(资源信息、依赖信息、版本信息等等)
  • 关键AB包(生成一个和目录名一样的包)

    • 主包 记录AB包依赖关键信息很重要!!!

四:AssetBundle需要注意的问题

1.关于AB包C#脚本的问题:
  如果场景中的预设体身上带有脚本需要打包进AB包中,预设体上的脚本看起来像是我们的脚本,其实就是利用反射来做的一个机制,预设体上的脚本本质就是记录着一堆数据而已,打包到AB包里的不是C#脚本本身,,而是预设体关联的脚本数据,预设体就是一个文件,每一个脚本都会有一个ID,预设体不是把脚本打成了AB包,而是把关联的数据打包到AB包中。


2.AB包打包需要注意的问题
  AB包打包需要指定平台打包,每个平台需要对应自己的AB包;

3.加载AB包需要注意的问题
加载步骤:

  1. 加载AB包
  2. 加载AB包中的资源

  在用脚本加载AB包时,相同的包只能加载一次,多次加载会报错,AB包加载一次便可以N次加载包中的资源

 void Start()
    {
        AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath+"/"+ "moudle");

        //只使用名字加载 会出现 同名不同类型资源 分不清
        GameObject obj= ab.LoadAsset<GameObject>("Cube");
		//这里就是第二次加载
        AssetBundle ab2 = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + "moudle");
        GameObject obj2 = ab2.LoadAsset("Cube", typeof(GameObject)) as GameObject;
        Instantiate(obj2);
    }

报错信息The AssetBundle 'moudle' can't be loaded because another AssetBundle with the same files is already loaded.


后续我会在补充更新!!!!如有错误请指出,谢谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值