您的位置:首页 > 移动开发 > Unity3D

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。多试试。因为这个很可能是开发环境引起的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: