AssetBundle打包加载/UnityWebRequest远程下载

UnityEditor编辑器扩展
菜单MenuItem MenuItem函数[(itemName,isValidateFunction,priority)]第一个参数声明菜单选项名称 如果是多层目录用’/'分割 第二个参数是是否为验证函数(布尔类型) 第三个参数设置优先级 多个菜单选项或同级目录下 先显示哪个子目录
[MenuItem("",false,100)]声明在静态函数的上面 意为在Unity视图中众多菜单选项中添加一个自己设置的选项名称 点击则调用该静态函数
Selection 是Editor之下的一个类 且引用Selection的脚本要放在Unity中 的Editor文件夹之下
Selection.activeObject 返回当前场景点击的游戏对象 选择多个则返回第一个选择的 不选择返回null
Selection.objects 返回一个数组 内容是当前场景点击的游戏对象
引用UnityEditor的脚本放到Editor文件夹中 其他放到Scripts文件夹中
AssetBundle打包
AssetBundle是一个存在于硬盘上的文件 可叫做压缩包 其中包含了多个文件 有serialized file序列化文件和resources files资源文件AB包在游戏运行的时候被加载 而不是直接加载 比如游戏安装包固定在100M以下 就应用了AB包 把资源放到了AB包里 当游戏进行到加载的时机再动态加载 压缩成AB包时有两种压缩算法分别为LZMA和LZ4
LZMA压缩程度高 打出的包非常小 但是耗时长 速度慢
LZ4压缩程度低 打出的包很大 速度较快
BuildPipeline.BuildAssetBundles(打包成品目录,BuildAssetBundleOptions.None(就是LZMA),BuildTarget.StandaloneWindows64(表示用于什么平台));

AssetBundle的加载
AB包的加载在协程中完成(加载完成yield return null) 不使用协程不知道什么时候加载已经完成
IEnumerator 协程函数名(形参列表)循环判断Caching.ready是否缓存完成 完成则yield return null;
使用UnityWebRequest(uwr)加载资源 uwr的error属性如果为空正常进行;不为空则抛出异常 ;
uwr的downloadProgress属性返回0.0到1.0的float值表示读取到服务器上的数据进度 uwr的IsDone属性表示在完成UnityWebRequest请求后返回true;反之返回false;AssetBundle.LoadFromMemory(uwr下载句柄的数据)返回AssetBundle对象 从服务器请求下来的数据全都存到一个AssetBundle对象中 如果要加载显示服务器下载下来数据中的预制体 则加载时用AssetBundle对象LoadAsset("");

你可能感兴趣的:(AssetBundle打包加载/UnityWebRequest远程下载)