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,我们下载的热更包不会被清理;而如果我们卸载了游戏,下载的热更包就会被清理掉。

如果长时间不清理,无用的热更包会越来越多,我们可以选择在每次游戏大版本更新时清理掉旧的热更包。

在后面的代码中没有写清理热更包的方法,根据实际项目的需要添加即可。