[开发者心得] 关于游戏数据的升级

[复制链接]
1171 |2
感情偏食BZ8 发表于 2023-11-29 16:21:57 | 显示全部楼层 |阅读模式
本帖最后由 感情偏食BZ8 于 2023-11-29 16:21 编辑

在游戏的版本迭代中,我们经常会遇到一些游戏保存的数据发生变化和升级的情况,这里记录一下开发中遇到数据升级变化的情况。



首先 关于游戏数据中 两个方法的区别


    protected initDefaultData(): void {
        this.gameData = 1;
    }
    protected onDataInit(): void {
    }



如上所示  initDefaultData() 的描述是 初始化默认数据  ,换种表达就是   如果没有当前的数据,即第一次进入游戏或者迭代后新的 subdata 的模块的情况  这个方法才会被调用
而  onDataInit() 的描述是游戏数据初始化完成后调用  , 换个表达 , 不管当前有没有数据 这个方法都会被调用, 即玩家每次进入游戏都会被调用一次


其次,我们需要了解编辑器为我们提供的两个属性 currentVersion和 version这两个属性
      
我们先来看下存档里默认的一个versino
32713fb3-9c5a-4ba7-ac86-d834ec4bc4b5.jpeg

上图所示这个存档创建以后会有一个默认的version,值是0 ,当我们使用 this.currentVersion时实际上是这个存档里面的version
而如下代码中的this.Version  是你当前存档的最新版本 , 我们需要重新写下get方法,每次需要版本更新时,最简单的方法就是写 当前版本+1



    protected onDataInit(): void {
        console.log("数据初始化")
        if (this.currentVersion != this.version) {
         //数据更改内容
        }
        //数据升级以后保存
        this.save(false);
    }
    //这里表示当前存档的版本如果之前存档是0 那下面就改成 return 1 以此类推
    get version() {
        return 0;
    }



最后,我们也必须要考虑回归玩家:跳跃版本的升级  比如从初版的存档到最新版本的存档,中间的跨度可能有好多的版本,这个时候我们可以考虑使用如下代码中的whlie循环进行一个连续的版本升级,但是代码的最后务必保证 this.currentVersion == this.Version



    protected onDataInit(): void {
        console.log("数据初始化")
        while (this.currentVersion != this.version) {
            switch (this.currentVersion) {
                case 0:
                    this._gameData1 = 2;
                    break;
                case 1:
                    this._gameData1 = 3;
                    break;
            }

                    //对版本进行竹本的升级


           if (this.currentVersion < this.version) {
                this.currentVersion = this.currentVersion + 1;
            }
            else {
                this.currentVersion = this.version;
            }

        }
        //数据升级以后保存
        this.save(false);
    }

OK   如此之我们的游戏数据升级之路就算完成了


PS:上面那个存档的话如果要初始化好需要先被调用一下哦,否则是看不到的





回复

使用道具 举报

复读机读复读机 发表于 2023-11-29 16:25:50 | 显示全部楼层
v2_138c5668-be00-45a4-9a3d-0eab96fcc2eg.jpg
回复

使用道具 举报

掏泥酱 发表于 2023-11-30 23:29:38 | 显示全部楼层
正需要这方面的知识,谢谢
回复

使用道具 举报

72小时热榜
热门版块
快速回复 返回顶部 返回列表