Project1
标题:
为什么我自己用脚本加到note里的属性,无法被meta读取?
[打印本页]
作者:
新耀012478
时间:
2021-6-26 23:28
标题:
为什么我自己用脚本加到note里的属性,无法被meta读取?
$gameMap._events[1].event().note
"<Actor:1>"
$gameMap._events[2].event().meta.Actor
"1"
//这个是一开始在事件的备注里就写好的。
$gameMap._events[6].event().note+="<acd:27>"
"<acd:27>"
$gameMap._events[6].event().note
"<acd:27>"
$gameMap._events[6].event().meta.acd
undefined
//这段是我自己加的,明明格式好像也一模一样的,不知道为什么读不出来。
//当然,我知道可以用indexOf()跟slice()解决。或者干脆eval()?只是好奇是什么原因,能直接用meta的话自然不想多写几行。
作者:
MH-Pride
时间:
2021-6-27 04:39
DataManager.extractMetadata 里面的data console.log(data) 就明白了
data一开场就加载一次所以把在数据库里面的note加载了所以meta就能读取
你$gameMap._events[6].event().note+="<acd:27>"都有已经读取完了你改了note 的变量并没有把变量加到DataManager.extractMetadata里面当然是undefined
以下就是把note提取出来然后给meta的
DataManager.extractMetadata = function(data) {
const regExp = /<([^<>:]+)(:?)([^>]*)>/g;
data.meta = {};
for (;;) {
const match = regExp.exec(data.note);
if (match) {
if (match[2] === ":") {
data.meta[match[1]] = match[3];
} else {
data.meta[match[1]] = true;
}
} else {
break;
}
}
};
作者:
MH-Pride
时间:
2021-6-27 04:46
你根本不需要这么麻烦直接在meta改就可以了
$gameMap._events[6].event().meta.acd=27
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1