unity3d在线更新资源专题(6)
2015-04-23 13:42
218 查看
今天碰到一个新的问题,就是前面说过了,要自己管理所有的AssetBundle,那么当有大版本更新的时候,就把老的删掉。但是我却出现了文件访问冲突。情况是这样的:
void checkDeletePreFiles()
{
string localMainVersion = getMainVersion (localVersion);
string serverMainVersion = getMainVersion (serverVersion);
if(!checkVersionBig(serverMainVersion, localMainVersion))
{
return;
}
Directory.Delete (PlatformConfig.PathOfArchive (), true);
}
这是检查文件并删除,但删除之后,我马上下载新的文件并创建,就有概率出现冲突。百度了一下,确实C#虽然说是同步方法,但系统资源是系统内核管理,它无法保证你肯定能删除完毕释放资源后才继续。所以我打算修改策略。在文件夹名字上加上游戏主版本号,这样子应该就能独立开来了。
改完后发现另一个问题,我如果提前删除了目录下的文件,发现游戏中有些预加载的控件会报错。额。。。
采用另一种方案,如果发现需要更新的,那么就不删除了。只有不更新的文件被删除。
然后看另一个问题, 缓存。
即使我删了aseetbundl中的文件,但打开游戏加载的还是老文件。
应该是u3d缓存引起的,即使重启也木有用。这个问题的具体原因还不是很清楚,而且时有时无,暂时不予考虑,仅做一下笔记先吧。感觉走正常更新流程应该不会出现这个问题的吧。
ps:
在使用WWW的时候,千万要注意如果发现更新问题,关闭u3d,重启apache。多试试。因为这个很可能是开发环境引起的。
void checkDeletePreFiles()
{
string localMainVersion = getMainVersion (localVersion);
string serverMainVersion = getMainVersion (serverVersion);
if(!checkVersionBig(serverMainVersion, localMainVersion))
{
return;
}
Directory.Delete (PlatformConfig.PathOfArchive (), true);
}
这是检查文件并删除,但删除之后,我马上下载新的文件并创建,就有概率出现冲突。百度了一下,确实C#虽然说是同步方法,但系统资源是系统内核管理,它无法保证你肯定能删除完毕释放资源后才继续。所以我打算修改策略。在文件夹名字上加上游戏主版本号,这样子应该就能独立开来了。
改完后发现另一个问题,我如果提前删除了目录下的文件,发现游戏中有些预加载的控件会报错。额。。。
采用另一种方案,如果发现需要更新的,那么就不删除了。只有不更新的文件被删除。
然后看另一个问题, 缓存。
即使我删了aseetbundl中的文件,但打开游戏加载的还是老文件。
应该是u3d缓存引起的,即使重启也木有用。这个问题的具体原因还不是很清楚,而且时有时无,暂时不予考虑,仅做一下笔记先吧。感觉走正常更新流程应该不会出现这个问题的吧。
ps:
在使用WWW的时候,千万要注意如果发现更新问题,关闭u3d,重启apache。多试试。因为这个很可能是开发环境引起的。
相关文章推荐
- unity3d在线更新资源(2)
- unity3d在线更新资源(4)
- unity3d在线更新资源(5)
- unity3d 在线更新资源(3)
- Unity3d的热更新和资源下载
- Android SDK 在线更新镜像服务器资源
- Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- Unity3d热更新全书-资源加载(一):从AssetBundle说起
- [unity3d]手游资源热更新策略探讨
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- Android SDK 在线更新镜像服务器资源
- [unity3d]手游资源热更新策略探讨
- Android SDK 在线更新镜像服务器资源
- unity3d减小安装包大小专题(4):剔除重复资源
- Android SDK 在线更新镜像服务器资源
- Android SDK 在线更新镜像服务器资源
- 利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- Android SDK 在线更新镜像服务器资源
- 加载资源:Assets,Resources,AssetsBundle(在线更新)