写在前面的话
AssetBundles是从unity导出你选择的assets,它使用特有的压缩格式并且应用可以实时去读取它。包括模型、贴图、音频等任何asset类型,甚至整个场景。压缩大小基本能达到zip的效果。AssetBundles从设计时就定位为可以很简单就下载到应用里。如果你想包括自定义的binary数据,就要用.bytes后缀,Unity将作为TextAssets导入他们。是目前来说比较主流的在运行时即时加载资源的一种处理手段。
AssetBundles目前来说,并不能达到官方文档中所说的那样各版本兼容。
资源打包
在unity3D中,打包AssetBundles使用BuidPipeline.BuildAssetBundle()来对资源进行打包。
AssetBundles打包需要区分使用平台,更具不同的平台,对AssetBundles分开进行打包。
在打包的初始阶段,需要根据情况对打包资源进行处理,最好的处理是将资源做成完整的Prefab,然后对这个完整的 prefab进行打包。
在打包之前,需要在 Edit -> ProjectSettings -> ** GraphicsSettings** 中将所使用的材质全部添加道Always Included shaders 中,否则会导致打包的素材材质丢失。
资源使用
AssetBundle资源的加载有多种方式,既可以使用WWW类进行加载,也可以像读取文件一样,从文件流数据中进行加载。
AssetBundle.CreateFromMemoryImmediate(byte[])函数可以即时加载AssetBundle文件,适合文件大小不太大的资源的即时加载
AssetBundle打包的资源,记录了资源的类型,声音类型的资源类型为UnityEngine.AudioClip,图像类型的资源类型为UnityEngine.Texture2D,GameObject类型的资源类型为UnityEngine.GameObject;