| 赞 | 0 |
| VIP | 0 |
| 好人卡 | 0 |
| 积分 | 22 |
| 经验 | 0 |
| 最后登录 | 2026-6-3 |
| 在线时间 | 220 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2150
- 在线时间
- 220 小时
- 注册时间
- 2022-2-7
- 帖子
- 2
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 sssxxx0e 于 2026-5-5 21:58 编辑
Q.想要在变量10里存0.5,但发现输出为0
进行尝试
1.
◆脚本:$gameVariables.setValue(10, 0.5);
: :$gameVariables.setValue(11, $gameVariables.value(10) * 2);
: :console.log($gameVariables.value(11));
2.
◆脚本:$gameVariables.setValue(1, 0.5);
◆文本:无, 无, 窗口, 底部
: :\v[1]
结果都是0
A.搜索后发现
根本原因:
RPGMakerMZ的`$gameVariables.setValue`方法在存储数值时会进行向下取整,这是官方为了简化变量为“整数计数器”的设计。
`rmmz_objects.js` 这个核心脚本文件中。`Game_Variables` 类的 `setValue` 方法是这样定义的:
Game_Variables.prototype.setValue = function(variableId, value) {
if (variableId > 0 && variableId < $dataSystem.variables.length) {
if (typeof value === 'number') {
value = Math.floor(value); // <--- 罪魁祸首就在这里!
}
this._data[variableId] = value;
this.onChange();
}
算是记录 |
|