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`