AssetBundle的定义和作用:

1,AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载。

2,AssetBundle自身保存着互相的依赖关系。

3,压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输。

4,把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小。

AssetBundle使用流程(打包方法):

Inspector面板最下方指定这个资源的AssetBundle属性(包名和后缀),注意这里的名字和后缀是不区分大小写的,如下图:




android assets加载文件 安卓assets文件路径_unity 异步加载网络图片


android assets加载文件 安卓assets文件路径_android assets加载文件_02


StreamingAssets也就是流式资源载入目录,该目录被拷贝到build文件夹中,不会修改,一般用于放置音频文件。代码如下:


public


3,在编辑器下面打包出来的AB包可以放在本地上,也可以放在服务器上加载。

AssetBundle资源的加载(本地加载,服务器下载):

AssetBundle.LoadFromFile(string path),从磁盘上的文件同步加载AssetBundle,代码如下:


private


AssetBundle.LoadFromMemoryAsync(byte[] bytes),代码如下:


IEnumerator


AssetBundle.LoadFromMemory(byte[] bytes),他的作用有很多,下文会说到


private


4,使用UnityWebRequestAssetBundle.GetAssetBundle(string uri)到服务器下载AB包,现在官方推荐的主流方式,以前使用的WWW方式下载,还有UnityWebRequest.GetAssetBundle(string uri)这两种方式都已经弃用了;使用这个方式不但可以下载服务器上的资源,同时他也可以加载本地的资源,但是强烈建议如果要加载本地资源,还是使用本地同步/异步加载的方式比较妥当,两种方式下面代码都有写到,留意代码注释:


IEnumerator


减少包大小打包方式:我们可以将一些共用的图片/材质单独打包成一个包,这样做可以大大的减小AB包的大小,因为我们在打包的时候系统或默认将这个包的依赖一起打包进去的,当我们打包的A包和B包都依赖同一个材质/图片时那么系统就会默认的将这个依赖同时打包到A包和B包里,这样就会导致我们打包出来的AB包比较大,但当我们将A包和B包的依赖单独打包成一个包时,这时系统就不会再将这个依赖打包到两个包里了,这样我们的包就会小很多,不过当我们要用到包的资源,在加载包的资源之前,先把这个包的依赖加载出来,加载包的依赖的,代码如下:(这里加载依赖的时候需要注意的是我们要加载的是跟文件目录名字一样的后缀为manifest包,比如我们上面构造AB包的时候是直接在Asset文件下创建了StreamingAssets将打包出来的包放在StreamingAssets这个文件夹下,那么我们加载的依赖包就是StreamingAssets.manifest这个包)


//加载这个物体的依赖


如何将从服务器上下载回来的AB包保存到本地上,代码如下:

UnityWebRequest.Get(string uri) 这个API去下载,只有使用这个API下载回来的资源我们才是可以访问到数据的,官方有一个专门用于下载AB包的API UnityWebRequestAssetBundle.GetAssetBundle(string uri)使用这个API下载回来的资源它是不支持原始数据访问的,也就是说我们想要保存从服务器上下载回来的AB包资源就不能使用这个API了,从服务器上下载AB包并保存到本地的代码如下:


//获取服务器上的资源


AB包的API来加载,代码如下:


IEnumerator


把打包好的AB包直接放在本地上StreamingAssets文件夹下,在进入游戏后直接从本地进行加载的路径问题(PC端与安卓端的路径)

1,为什么要放在StreamingAssets这个文件夹下来加载呢,因为该目录会被拷贝到

build文件夹中,不会修改,他是流式资源载入目录,而且官方也专门给我们封装了加载路径

2,加载StreamingAssets这个文件夹下的资源的路径是:

Application.streamingAssetsPath+"/"+文件名称组成,这里需要加载的资源要带后缀

这个路径的真实路径在PC端和安卓端都是不同的,Unity会根据发布的平台而进行变动,

值得一提的是在Unity旧版本里面发布安卓端,使用这个路径加载StreamingAssets

下的资源他是会报错的,但是现在新版本(2019版)经过实验是不会出现任何问题的不管

是PC端还是安卓端加载都没有任何问题,如果你的版本是旧版本或者是在安卓端加载时

路径出现问题,那么可以使用:

"jar:file://" + Application.dataPath + "!/assets/"+文件名称组成 这个路径,这个路径

是旧版本安卓端加载StreamingAssets文件夹下资源的路径。

加载AssetBundle 资源,运行游戏时出现材质丢失问题解决方法:

AB包的时候,Unity默认是不连Shader一同打包进去的,所以当我们在

发布运行的时候就会出现材质丢失的问题,所以这个时候就需要我们自行添加了,添加步骤如

下:点击Edit>Project Settings>Graphics,然后下拉到Always Included Shaders,

将Size改大一些,然后在将丢失的那个材质所使用的Shader添加进去,然后再重新打包运

行就可解决材质丢失的问题。


android assets加载文件 安卓assets文件路径_confluence 编辑器这次没有加载_03