download:C#速成指南:从入门到进阶,实战WPF与Unity3D开发
备:https://www.97yrbl.com/t-1374...
浅谈AB包
Unity资源管理
在Unity中,一般来说,资源加载形式次要分为Resources
加载和AssetBundle加载。
Unity有个非凡文件夹Resources,放在这个文件夹下的资源能够通过Resources.Load()
来间接加载。即Resources加载资源形式。
当取得AssetBundle
之后,也能够调用AssetBundle
对应的API来加载资源。
什么是AB包
AB包全名AssetBundle(资源包)。是一种Unity提供的用于寄存资源的包。通过将资源散布在不同的AB包中能够最大水平地缩小运行时的内存压力,并且能够有选择地加载内容。
为什么要用AB包
1、热更新。(要热更新须要确保AB包打进去的资源具备唯一性,且雷同资源的AB包检验码雷同。)
2、Resources
加载尽管简略不便,然而也有很多问题:
对内存治理造成肯定的累赘。
在关上利用时加载工夫很长。
Resources文件夹下的所有资源对立合并到一个序列化文件中(能够看成对立打一个大包,巨型AB包有什么问题它就有什么问题),对资源优化有肯定的限度。
不倡议大量应用Resources。
应用办法
打AB包:
public static AssetBundleManifest BuildAssetBundles(string outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);
- 1
BuildAssetBundleOptions
枚举类型的值转化为二进制都是只有一位是1,其余位都是0。如UncompressedAssetBundle是0000 0000 0001,IgnoreTypeTreeChanges是0000 0100 0000,DisableLoadAssetByFileName是1000 0000 0000。
BuildAssetBundles
底层会对传入的BuildAssetBundleOptions值进行解决,依据二进制位数来判断应用哪种策略构建AB包。因而如果在构建AB包时想要应用多种策略,用&连贯即可。
BuildTarget参数用来抉择针对的平台,因为AB包在不同平台下是不兼容的。
设置资源AB包名:
`AssetImporter.assetBundleName // AB包名AssetImporter.assetBundleVariant // AB包变体名`
获取AB包办法:
`AssetBundle.LoadFromFile(string path)AssetBundle.LoadFromFileAsync(string path)AssetBundle.LoadFromMemory(byte[] binary)AssetBundle.LoadFromMemoryAsync(byte[] binary)AssetBundle.LoadFromStream(Stream stream)AssetBundle.LoadFromStreamAsync(Stream stream)WWW.assetBundle`