[转]unity打包建议

针对项目的建议

unity项目中的3个特殊文件夹

a.Resources(只读)

Resources文件夹下的资源会被全部打包到apk或者ipa里面,相当与一个unity默认的AssetBundle,按理说是可以将游戏中所有的资源全部放在Resources进行加载,但是

Resources下的文件数量会影响游戏的启动速度,越多越慢。其次游戏为了降低drawcall,需要对相同材质的图像打包图集,但是如果放在Resources里面是没法打包图集的。

Resources下的资源打包时会进行压缩

b.StreamingAssets(只读)

StreamingAssets文件夹下的资源会被全部打包到apk或者ipa里面

StreamingAssets文件夹下的资源不会影响游戏启动速度

StreamingAssets文件夹下的资源不会被压缩,所以占用内存较大

c.persistentDataPath(可读写)

persistentDataPath文件夹在unity项目中是不存在的,他是程序的沙盒文件夹,只有你游戏安装完成之后,才会存在这个目录,但是它可读写。

 

综上三种文件夹,我们自己在使用时,Resources里面放的资源只是在本地开发阶段使用,打包的时候会把Resources中的文件都考本出去打成AssetBundle包,然后再将打包好的AssetBundle放到StreamingAssets文件夹下打包apk。

游戏运行时再将资源考本到persistentDataPath文件夹下,因为这个目录可读写,所以能够用来做资源热更新。

 

由于以上分析的几种加载手段各有各的使用情景和特点。因此建议在我们的项目中按照以下情景使用这些方法:

  • 随游戏一同发布的AssetBundle(一般位于StreamingAssets文件夹中):
  • 在打AssetBundle包时,使用LZ4压缩格式进行打包(开启BuildAssetBundleOptions.ChunkBasedCompression即可)。
  • 在运行时需要加载AssetBundle对象时,使用LoadFromFile方法进行加载。
  • 这样做的好处是:即可以将AssetBundle文件压缩,又可以兼顾加载速度,且节约内存。
  • 作为更新包,需要从服务端下载的AssetBundle:
  • 在打AssetBundle包时,使用默认的LZMA格式压缩。
  • 使用方法下载并缓存AssetBundle包文件。
  • 这样做的好处是:获得了最大的压缩率,在下载过程中可以减少数据传输量。同时,在本地磁盘创建缓存之后,又可以兼顾之后的加载速度,且节约内存。
  • 我们自己进行加密的AssetBundle:
  • 在打AssetBundle包时,使用LZ4压缩格式进行打包(开启BuildAssetBundleOptions.ChunkBasedCompression即可)。
  • 在运行时需要加载AssetBundle对象时,使用LoadFromMemory方法进行加载。(这也是从内存中使用流数据加载AssetBundle对象的仅有的使用场景。)
  • 我们自己压缩的AssetBundle:
  • 我们自己也可以使用第三方库或工具对生成的AssetBundle包文件进行压缩,如果需要这样做,则我们最好不要再使用Unity3D对 AssetBundle进行压缩,因此在打包时选择开启 BuildAssetBundleOptions.UncompressedAssetBundle。
  • 在运行时需要加载AssetBundle对象时,使用LoadFromFileAsync方法进行异步加载。

///////////****以上摘自:http://www.cnblogs.com/jiangshuai52511/p/6437239.html  作者:凉城旧巷旧少年 ******/////////

posted @ 2018-08-01 19:54  iKobe  阅读(713)  评论(0)    收藏  举报