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

Project1

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

[有事请教] 为什么我自己用脚本加到note里的属性,无法被meta读取?

[复制链接]

Lv2.观梦者

梦石
0
星屑
848
在线时间
117 小时
注册时间
2018-4-7
帖子
114
跳转到指定楼层
1
发表于 2021-6-26 23:28:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
$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的话自然不想多写几行。

Lv3.寻梦者

梦石
0
星屑
2585
在线时间
297 小时
注册时间
2021-5-4
帖子
101
2
发表于 2021-6-27 04:39:15 | 只看该作者
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;
        }
    }
};
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2585
在线时间
297 小时
注册时间
2021-5-4
帖子
101
3
发表于 2021-6-27 04:46:01 | 只看该作者
你根本不需要这么麻烦直接在meta改就可以了
$gameMap._events[6].event().meta.acd=27
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-27 05:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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