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`