1:UnityWebReqequest
1:UnityWebReqequest
1:crc:文件校验
2:dependenies:依赖关系
3:
1:LZMA 压缩的包更小时间长,默认压缩方式
2:下载时使用LZMA算法快,用lz4算法保存本地
3:uncompressedassetbundle:不压缩
4:
1:同时加载的资源放在同一个包内。
2:共享资源 ,要分包
3:同时加载的小资源放一个包内
4:同一个资源有两个版本,通过后缀来进行区分
5:
1:加载ab资源
1:ab签名可以划分类别 列如签名:scene/wall
2:
1:指定ab包签名:(不区分大小写)
2:构建ad包在Editor 下写打包代码
3:
第一次下载会缓存到本地 第二次会从本地加载
先加载依赖包
共享的资源打成一个包
using UnityEditor; public class CreateAssetBundles { static void BuildAllAssetBundles() {} }
ab右下角第二栏是变体名,神tm后缀。。
Manifest
Assets:文件的路径
Dependencies:依赖关系
依赖关系一定是要完整路径
加载资源可以不要后缀
Build的路径(只要是在硬盘上都可以)
BuildAssetBundleOptions.None:使用LZMA算法亚索,包小时间长,使用之前需要整体解压。
一旦被解压,会使用LZ4重新压缩。
包大但加载时间快,下载的时候LZMA算法,LZ4保存到本地。
.UncompressedAsseBundle:不压缩
.ChunkBasedCompression:使用LZ4压缩,比不压缩的加载速度差不多,而且比它文件还小
依赖关系的理解
经常更新的资源放在一个单独的包里面,跟不经常更新的包分离
需要同时加载的资源放在一个包里面
其他包共享的资源放在一个单独的包里面
需要同时加载的小资源
同一个资源有两个版本
材质丢失的话,因为材质没有在AssetBundle中
逻辑实体分租
a.所有UI界面一个包(贴图和布局信息一个包)
b.一个角色或者素有角色一个包(这个角色里面的模型和动画一个包)
c.所有场景共享的部分一个包(包括贴图和模型)
按类型分类
所有声音资源,所有shader一个包,所有模型一个包,材质一个包
按照使用分组
同一时间内使用的所有资源打成一个包,可以按照关卡分
只有发布游戏了,才会上传AB包传到服务器上去
AssetBundle的加载和使用
AssetBundle ab=AssetBundle.LoadFromFile("AssetBundles/scene/wall.unity3d"); //得到资源
GameObject wallprefab =ab.LoadAsset<GameObject>("Wall");//加载资源文件
Instantiate(wallPrefab); //实例化
manifest文本文件,
AssetBundle会为当前目录生成一个AssetBundle因为指定到同一个包,就只会生成一个包
斜杠来划分目录
打包不区分大小写
BuildPipeline.BuildAssetBundles(打包的路径,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);打包方法
把方法放进菜单里面
[MenuItem("Assets/Build AssetBundles")]
判断目录是否存在
if(Directory.Exist(dir)==false)
{
Directory.CreateDirectory(dir);
}
只有把脚本放在Editor文件夹下面,才可以使用UnityEditor下面的一些API