Project1

标题: 把自己的变量挂在$gameParty下面可能会导致无法保存? [打印本页]

作者: 新耀012478    时间: 2022-3-21 23:13
标题: 把自己的变量挂在$gameParty下面可能会导致无法保存?
本帖最后由 新耀012478 于 2022-3-22 12:58 编辑

【自己解决了】我怀疑可能是保存需要满足某种规则。
我也是在其它地方看到的,想保存数据直接把你的变量或者数组挂在$gameParty这些东西下面就行。
以为没问题我也就一直这么用了,直到今天出问题为止。
星屑浪费了呢……
另外,我用Object.defineProperty创建的get方法没有被保存。
作者: 新耀012478    时间: 2022-3-22 11:54
我找到原因了,不确定是不是唯一的原因。
    this.WarChessDisplayArea = new Array();
    for (let i=0;i<this.MoveRange.length;i++){//啊,原来是你啊……
        var x=new Game_WarChessDisplayArea();
        x.show(MagicWarChess.AreaPicture,0,this.MoveRange[i][0],this.MoveRange[i][1],100,100,128,1);//其它合成方式会有重影。
        var y=new Bitmap(48,48);
        y.fillAll(MagicWarChess.MoveColor);
        this.WarChessDisplayArea[i]=[];//不能直接那样等于。
        this.WarChessDisplayArea[i][0]=y;
        this.WarChessDisplayArea[i][1]=x;
    };
这个地方,我保存的名字换了好几遍了,但就是无法存档。准确来说有问题的是最后三行。只要把最后三行删掉,那就能存档。
我想原因应该是写插件的时候的常用操作,将你想保存的数据挂在原来的东西下面,这样它就会帮你自动保存。
想来就是这个原因了,它这个可能是有着某种规则与限制的,因此我挂了它不支持的东西,所以才无法保存了。
作者: 新耀012478    时间: 2022-3-22 12:32
本帖最后由 新耀012478 于 2022-3-22 12:50 编辑

准确来说,是保存Bitmap的部分出了问题。我把保存Bitmap所在的倒数第二行注释掉以后它就正常保存了。
现在修好了,不过问题没有解决……也就是说……我这个程序里至少有三个bug……而且每个bug都能导致无法存档……
第一个bug是昨天帖子的标题跟内容里说的,我又用了一个东西去等于SceneManager._scene._spriteset._tilemap,大概是这个意思。实际上我是Spriteset_Map.prototype.createLowerLayer里面,去等于了this._tilemap。
去掉了这个以后在不进战棋的情况下可以保存了。
第二个是二楼的这个,不能用数组保存Bitmap信息,否则就无法保存。
还有第三个,也是我昨天提到的,显示伤害数字,我用的那个代码哪里估计有问题,也会导致无法保存。
因为这个是我从别人的MV版本里直接复制过来的,我查了一下,是这么回事。它这个也是从MV的updateDamagePopup里复制过来的。
而MZ的updateDamagePopup与MV的不一样了。它那个跟MV完全一样。我把这个换成MZ版本的以后就可以存档了。
所以问题修复。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1