unity setdirty怎么把streamingsasset里面的文件放到peristendatapath里边


里有两种动态加载机制:一个是框架底下有点没必要而且很麻烦。
稳妥起见你可以这样管理 用的术语这种数据缓存是非托管的。
总结一下各种加载和初始化的用法:
Destroy: 主偠用于销毁克隆对象也可以用于场景内的静态物体,不会自动释放该对象的所有引用虽然也可以用于Asset,但是概念不一样要小心,如果用於销毁从文 件加载的Asset对象会销毁相应的资源文件!但是如果销毁的Asset是Copy的或者用脚本动态生成的只会销毁内存对象。
GC.Collect()强制垃圾收集器立即釋放内存 unity setdirty的GC功能不算好没把握的时候就强制调用一下。
资源加载通过AssetBundle其实和通过Resources没有本质的区别,Resources其实在unity setdirty内部也是作为一个AssetBundle来打包的很多游戏还需要一个从远端服务器下载更新资源进行热更新的需求。
这个可以通过比较本地和远端的资源版本号来区别是从远端下载还昰从本地客户端读取不同平台上本地的资源存贮位置不同,大体如下:
 

这里使用WWW.LoadFromCacheOrDownload()来下载远程客户端(本地的资源)这个方法具体的功能如下:
1.unity setdirty会先判断本地有无”url”的文件,如果没有就会根据URL去下载相应的文件。然后在本地存储一下文件并记录相应的版本号。
2.unity setdirty会先判断本地有”url”的文件本地的版本号小于API传入的版本号,此时unity setdirty也会去下载最新的文件然后覆盖本地的此文件,然后记录下最新的版本號
3.unity setdirty会先判断本地有”url”的文件,本地的版本号大于等于API传入的版本号此时unity setdirty会从本地直接取,并且加载相应的文件返回
chche会存在本地硬盤的某个目录下面,不在游戏的安装目录中可以通过Caching.CleanCache()删除本地下载的资源。
版本比对的方法这里就不写了可以通过一个配置文件存放各个AssetBundle的版本号,服务器更新之后本地客户端获取远程的版本号信息,再和本地的版本号比对要下载的下载后更新本地版本号就行了。

}

PS: 一般所有资源修改完后调用調用后unity setdirty会重新导入修改过后的资源(数量大费时间)。

}

我要回帖

更多关于 unity settexture 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信