我们游戏对资源的更新并没有使用AssetBundle.
而是采用了下面的解决方案(客户端C# 和服务器 Java的约定 ,传输协议都是json):
第一步:客户端与服务器约定一个版本号。
第二步:客户端向服务器发送本地的一个版本号(不同的玩家,本地的版本号的信息肯定也不一样),服务器比对最新的版本号与客户端本地的版本号,过滤出需要更新的文件列表。把最新的版本号和需要更新的文件列表发送给客户端。
第三步:客户端下载需要更新的文件列表,直到下载完毕,然后重写本地的版本号。
对脚本的更新也是采用成熟的Ulua方案。
其中最近研究了一下 俊擎网络的 Simple Framework v0.2.7 http://www.ulua.org/
这个框架很到位。
Lua脚本本身被看作资源处理的, 但是也有特殊性
1.打包时,把游戏中的LUA脚本资源打包成ZIP。
2.玩家第一次启动游戏中,解压缩Lua脚本的ZIP文件到本地。(只执行一次,之后更新Lua就和普通资源一样)
开源库:http://icsharpcode.github.io/SharpZipLib/
3.在玩家每次启动时,执行上面的【更新资源】的三步。