由于红警的资源比较大,红警2加上红警尤里复仇两个版本,还有二十多首高清无损的背景音乐,有一个G左右的大小,当用户打开网页玩耍的时候,总不能每次都下载一个G的资源吧。所以需要一个方法,将所有的资源保存到本地使用。
好在h5里面增加了indexeddb,也就是本地数据库,可以实现我们想要的需求。
既然有这个东西了,那我们也不能用原生的,那样操作起来更复杂,有没有相应的轮子呢,答案肯定是有的。找来找去,最后确定使用 Dexie 这个库。
那么如何去实现呢,还需要保存一些配置项,我在库里面创建了两个表,一个是存放资源使用,另一个是存放配置项使用。
具体实现逻辑:
- 第一次进入游戏时,先去配置项表里面获取游戏的相关配置项,如果没有,则生成一份默认配置,但不会将版本号存入,当前表里就多了一份配置项。
- 接着进入资源加载状态,判断本地版本号和服务器版本号是否一致,不一致,将去资源表里面获取本地所有的资源索引,然后和服务器上的资源表进行对比。完成以后将未含有的资源进行加载。
- 加载完成所有资源以后,将本地配置表的版本号存入。
- 第二次打开游戏的时候,直接读取本地配置表配置,如果版本号不一致,将触发资源比对。如果版本号一致,将直接略过,进入游戏。