设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2344|回复: 6
打印 上一主题 下一主题

[有事请教] 使用快速读取脚本后地图短暂错位

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2987
在线时间
441 小时
注册时间
2014-11-21
帖子
145
跳转到指定楼层
1
发表于 2021-4-1 06:26:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 hy2000 于 2021-4-4 11:52 编辑
  1. (function() {
  2.     const Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  3.     Game_Interpreter.prototype.pluginCommand = function (command, args) {
  4.         Game_Interpreter_pluginCommand.call(this, command, args);
  5.         if (command.toLowerCase() === 'autosave') {
  6.             let saveId = 1;
  7.             if (args && args[0]) {
  8.                 saveId = parseInt(args[0]);
  9.             }
  10.             $gameSystem.onBeforeSave();
  11.             if(DataManager.saveGame(saveId)) {
  12.                 StorageManager.cleanBackup(saveId);
  13.             }
  14.         }
  15.         if (command.toLowerCase() === 'autoload') {
  16.             let saveId = 1;
  17.             if (args && args[0]) {
  18.                 saveId = parseInt(args[0]);
  19.             }
  20.             if(DataManager.loadGame(saveId)) {
  21.                 SoundManager.playLoad();
  22.                 SceneManager._scene.fadeOutAll();
  23.                 $gamePlayer.reserveTransfer($gameMap.mapId(), $gamePlayer.x, $gamePlayer.y);
  24.                 $gamePlayer.requestMapReload();
  25.                 SceneManager.goto(Scene_Map);
  26.                 $gameSystem.onAfterLoad();
  27.             }
  28.         }
  29.     }
  30. })();
复制代码

这是我找到的一个地图上快速存读档的脚本,但发现在地图上进行快速读取的时候,会有很短的一段时间仍然保留在读档前的地图,却使用了读档后地图的图块和方位导致错位现象。尤其是读档前后地图图块不一样的时候,地图会突然变得莫名其妙一瞬间,很那看。
我尝试新建工程使用这个脚本,却没有这个问题;但备份删光我的工程中其他脚本后依然有这个问题,应该不是脚本冲突的原因,猜测可能和地图数量/复杂程度导致的读取速度有关系?


错位效果如图(读档前与读档的一瞬间,读档时不知为何读取了读档目标地图的图块,却有一瞬间仍然保持在原地图),读档前后两张地图使用了相同的ABC层,但DE层不一样,读档时发生短暂错位
去Scene_Map和Game_Map类里面鼓捣了半天也没找到其源头,不知道有没有大佬有头绪可能的原因?

更新:目前靠强行黑掉Spriteset_Map.update的执行,让画面强制中间不刷新,勉强算是表现层解决了
          但这么做会有潜在性的隐患,最好还是能找到源头……

Lv3.寻梦者

梦石
0
星屑
3834
在线时间
1181 小时
注册时间
2016-8-9
帖子
2399

开拓者

2
发表于 2021-4-1 14:50:13 | 只看该作者
本帖最后由 白嫩白嫩的 于 2021-4-4 20:13 编辑

自制一张读取图片,比如加上自己的logo什么的放在100层,然后开启脚本,然后再淡出图片,试试图片能不能遮丑


或者你换个脚本试试?

我用的是2楼坦克大佬提供的最后一个脚本




或者用用这个下面这个,这个是从国外分享的事件脚本里看到的

JAVASCRIPT 代码复制
  1. if (DataManager.loadGame(index)) {
  2. $gamePlayer.reserveTransfer($gameMap.mapId(), $gamePlayer.x, $gamePlayer.y);
  3. $gamePlayer.requestMapReload();
  4. SceneManager.goto(Scene_Map); }


点评

现在我的做法是强行给System做一个freeze来黑掉SpriteMap的update,让地图强制不刷新来使中间只会黑掉,虽然会有潜在的效率问题,先凑活用着吧()  发表于 2021-4-5 06:14
哎,这就没办法了,不过不要太难受,我看正规的商业游戏也难免出一些不严重的bug而且也不修复,放宽心先把游戏内容做好再解决这个问题吧  发表于 2021-4-4 20:02
不行,读取是会把图片显示也换掉的;我尝试在脚本对应部分加,但似乎执行显示还是比这个瞬间晚,起不到作用  发表于 2021-4-4 11:33
哈哈哈,瓜瓜酱一直很幽默啊~~  发表于 2021-4-2 15:19
图片遮丑有我内味了  发表于 2021-4-1 21:06
酸酸甜甜就④哇噢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-14 00:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表