Unity AssetBundle

来源:互联网 发布:ipad屏幕录制软件 编辑:程序博客网 时间:2024/06/07 21:45

Unity 的AssetBundle

 需要注意的地方是,

1.

AssetBundle.LoadAsset(string name) 这个name 传的并不是在编辑器中设置的那个名字, 而就是本身的名字. 例如一个文件叫Test.png,   要加载的话就是直接 Load("Test") 就可以了, 不需要后缀.


2.

AssetBundle.Unload(bool)  如果传入的bool 值是true的话, 也就是说除了把加载得到的AssetBundle对象释放并置空之外, 还把通过这个AssetBundle对象获取到的例如Object, Texture2D 之类的都置空并释放了.   如果传入的bool值是false 的话, 就只释放AssetBundle对象. 但是之前通过他得到的Texture2D 之类的东西, 不会释放,  对于已经Instantiate 出来的实例物体的话, 更加不可能释放了.   反正就是以后都不可能再通过这个AssetBundle对象来获取到什么东西了.


3. 游戏中不可以加载与本版本不同版本打包出的assetbundle, 会报一个版本不对的错误.


4.  AssetBundle 中物体挂在的脚本载属性面板上设置的值, 也是保存好的. 可以正常赋值, 正常使用


5, 经过实际测试, WWW.LoadFromCacheOrDownload(string url, int version)  这个api 只要version发生了改变就会下载, 不论版本号比原来的大还是小, 而且也确实是会缓存的, 虽然我在root过的手机上也没有找到他的cache 放在哪了, 


6. AssetBundle 除了可以通过WWW 的方式下载, 也可以别的方式去读取内存里面的, 然后通过AssetBundle.loadfrommemory(byte[] bytes) 来弄


7.亲测过prefab 和audioClip. Texture


8 StreamingAssets 在Android 端的地址是:       jar:file://+Application.DataPath+"!/assets/"+文件全名, 带后缀;