Apache服务部署
这里我们使用wamp,具体见
MySQL摘要 | ATAO2017,阿宅创造奇迹! (atao-blast.github.io)
Apache是一个Web服务器软件,能够快速方便地提供Http访问。
服务器文件部署
Apache服务器的文件服务是有指定的文件夹的。
我们进入wamp的安装目录:C:\wamp\www
在其中按照下面递进的顺序新建文件夹“AssetBundle——0.1——1”
然后将我们打包出来的热更文件(Unity工程目录/Hot/指定的平台/
里面的文件)拷贝到上面新建的文件夹内(Patch.xml文件不用拷贝)
想要打包出热更文件,我们可以修改一些贴图,使用画图工具随便画几笔。
我们在服务器中,使用的是ServerInfo.xml,它记录了更多的信息,我们完善一些Patch.xml,添加一些东西。
复制一份Patch.xml,命名为ServerInfo.xml放在C:\wamp\www
下,修改里面的内容
1 2 3 4 5 6 7 8 9
| <?xml version="1.0" encoding="utf-8"?> <ServerInfo> <GameVersion Version="0.1"> <Patches Version="1" Description="测试热更"> <Files Name="Android" Url="http://127.0.0.1/AssetBundle/0.1/1/Android" Platform="Android" MD5="13404407d22950be6d31671e7a393f29" Size="1.78222656" /> <Files Name="attack" Url="http://127.0.0.1/AssetBundle/0.1/1/attack" Platform="Android" MD5="fc3a867e0cc5f1dde44583b40cee01d1" Size="843.8633" /> </Patches> </GameVersion> </ServerInfo>
|
每次更新时,我们就可以打开这个文件,根据需要自己添加GameVersion节点并且把Patch.xml的内容复制粘贴到ServerInfo里面
附:wamp服务器自定义网站根目录的方法wampserver集成环境安装,自定义根目录以及多站点配置_TinyMind
注意事项
我们打热更包时,都是区分各种平台的。但是在服务器这边只有一个AssetBundle文件夹,所以不同平台需要在不同的服务器上部署热更包。
如何回退热更
我们在服务器中每一次热更都对应着一个文件,如果想要回退热更,直接将服务器端的ServerInfo删掉最新的热更信息即可。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?xml version="1.0" encoding="utf-8"?> <ServerInfo> <GameVersion Version="0.1"> <Patches Version="1" Description="测试热更"> <Files Name="Android" Url="http://127.0.0.1/AssetBundle/0.1/1/Android" Platform="Android" MD5="13404407d22950be6d31671e7a393f29" Size="1.78222656" /> <Files Name="attack" Url="http://127.0.0.1/AssetBundle/0.1/1/attack" Platform="Android" MD5="fc3a867e0cc5f1dde44583b40cee01d1" Size="843.8633" /> </Patches> <Patches Version="2" Description="测试热更2"> <Files Name="Android" Url="http://127.0.0.1/AssetBundle/0.1/2/Android" Platform="Android" MD5="23598562d22950be6d31671e7a393f29" Size="5.36592191" /> <Files Name="attack" Url="http://127.0.0.1/AssetBundle/0.1/2/attack" Platform="Android" MD5="bn3t867e6cc5f1dde44583b40cee01d1" Size="985.156" /> </Patches> </GameVersion> </ServerInfo>
|
如果想要回退,将新的Patches节点删掉
1 2 3 4 5 6 7 8 9
| <?xml version="1.0" encoding="utf-8"?> <ServerInfo> <GameVersion Version="0.1"> <Patches Version="1" Description="测试热更"> <Files Name="Android" Url="http://127.0.0.1/AssetBundle/0.1/1/Android" Platform="Android" MD5="13404407d22950be6d31671e7a393f29" Size="1.78222656" /> <Files Name="attack" Url="http://127.0.0.1/AssetBundle/0.1/1/attack" Platform="Android" MD5="fc3a867e0cc5f1dde44583b40cee01d1" Size="843.8633" /> </Patches> </GameVersion> </ServerInfo>
|
这种方式的缺点是:服务器需要保存大量的热更文件。占用服务器的空间,所以必要时需要对服务器的旧热更包进行清理。
游戏大版本更新
我们下载的热更包,都会下载到Unity的PersistentDataPath
里。
在安卓平台,游戏大版本更新时覆盖安装apk,我们下载的热更包不会被清理;而如果我们卸载了游戏,下载的热更包就会被清理掉。
如果长时间不清理,无用的热更包会越来越多,我们可以选择在每次游戏大版本更新时清理掉旧的热更包。
在后面的代码中没有写清理热更包的方法,根据实际项目的需要添加即可。