AssetsBundle 学习(一)

本文介绍了Unity中AssetBundle的使用方法,包括打包流程、资源加载和解包等关键步骤,并探讨了如何合理组织AssetBundle以优化游戏资源管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AssetBundle 是unity推荐的资源管理方式。
AssetBundle分为打包,使用两种形式
打包

Object obj = AssetDatabase.LoadMainAssetAtPath("Assets/Test.png");
BuildPipeline.BuildAssetBundle(obj, null,
                                  Application.streamingAssetsPath + "/Test.assetbundle",
                                 BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets
                                 | BuildAssetBundleOptions.DeterministicAssetBundle, BuildTarget.StandaloneWindows);

这里写图片描述

在使用的时候,需要用WWW来加载Bundle,然后再用加载出来的Bundle来Load资源

WWW w = new WWW("file://" + Application.streamingAssetsPath + "/Test.assetbundle");
myTexture = w.assetBundle.Load("Test");

打包

1、使用Directory.GetFiles();Directory.GetDirectories();获取到目录及目录下的文件
2、判断之前得到的路径是否包含.meta,如果是则不取出资源,将路径转换为assets开头的相对路径,然后加载资源。
3、利用BuildPipeline.BuildAssetBundle进行打包。该方法有5个参数:
主资源,资源数组(这两个参数一定有一个不为空)如果主资源存于资源数组中是没问题的。如果设置了主资源,可以通过Bundle.mainAsset来直接使用它
第三个参数是路径:一般设置为Application.streamingAssetsPath + Bundle的目标路径和目标名称。
第四个参数有四个选项:BuildAssetBundleOptions.CollectDependencies会去查找依赖
BuildAssetBundleOptions.CompleteAssets会强制包含整个资源,
BuildAssetBundleOptions.DeterministicAssetBundle会确保生成唯一ID,在打包依赖是会用到
第五个参数是平台,在安卓,ios,pc下,需要传入不同平台标识,以打出不同平台使用的包,windows平台打出来的包不能用于ios。
在打包的时候,我们需要对包的大小和数量进行一个平衡,所有资源打成一个包,一个资源打一个包,都是比较极端的做法,他们的问题也很明显,更多情况下我们需要灵活地将他们组合起来
打成一个包的缺点是加载了这个包,我们不需要的东西也会被加载进来,占用额外内存,而且不利于热更新
打成多个包的缺点是,容易造成冗余,首先影响包的读取速度,然后包之间的内容可能会有重复,且太多的包不利于资源管理

哪些模块打成一个包,哪些模块打成多个包,需要根据实际情况来,例如游戏中每个怪物都需要打成一个包,因为每个怪物之间是独立的,例如游戏的基础UI,可以打成一个包,因为他们在各个界面都会出现

解包
1、加载Bundle,new一个WWW传入URL即可加载。
一般使用file://+Bundle路径指定本地Bundle

2016-7-24
先在AssetBundle栏内为prefab添加名字
之后创建打包工具

首先创建平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值