查看: 3330|回复: 1

[原创发布] 事件独立数据Game_SelfData

[复制链接]
梦石
0
星屑
1907
在线时间
1555 小时
注册时间
2013-4-13
回帖
783
发表于 2020-12-24 00:00:26 | 显示全部楼层 |阅读模式

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

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

×
研究过程中搞出来的小玩具...
可以将Event的数据永久保存到全局, 和独立开关的使用方法一致
可以存储任意类型的数据
大概率也有其他类似的插件吧
理论上应该是MV/MZ通用


[pre lang="JavaScript"]
{
  class Game_SelfData extends Game_SelfSwitches {
    setValue(key, value) {
      this._data[key] = value;
      this.onChange();
    }
    value(key) {
      return this._data[key];
    }
  }
  window.Game_SelfData = Game_SelfData;
}
{
  const temp = DataManager.createGameObjects;
  DataManager.createGameObjects = () => {
    temp();
    $gameSelfData = new Game_SelfData();
  };
}
{
  const temp = DataManager.makeSaveContents;
  DataManager.makeSaveContents = () => {
    const contents = temp();
    contents.selfData = $gameSelfData;
    return contents;
  };
}
{
  const temp = DataManager.extractSaveContents;
  DataManager.extractSaveContents = (contents) => {
    console.log(contents.selfData);
    temp(contents);
    $gameSelfData = contents.selfData;
  };
}
[/pre]

使用方法, 在事件中插入脚本:

例子:记录数据
[pre lang="JavaScript"]const event = $gameMap.event(this._eventId);
const key = [this._mapId, this._eventId, 'pos'];
$gameSelfData.setValue(key, [event.x, event.y, event.direction()]);[/pre]

例子:读取数据

[pre lang="JavaScript"]const event = $gameMap.event(this._eventId);
const key = [this._mapId, this._eventId, 'pos'];
const [x, y, d] = $gameSelfData.value(key);
event.setPosition(x, y)
event.setDirection(d)[/pre]
夏普的道具店

塞露提亚-道具屋的经营妙方同人作品
发布帖:点击这里
梦石
0
星屑
699
在线时间
51 小时
注册时间
2020-3-7
回帖
35
发表于 2020-12-24 15:30:22 | 显示全部楼层
哇,支撑
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部