如何获取当前选中技能的MP消耗?

当我提到“已选择”时,我指的是战斗技能菜单中光标当前悬停的技能。

我尝试了以下代码:return BattleManager.inputtingAction().mp;,但它不起作用。我对脚本编写不太了解。

BattleManager.inputtingAction() 返回的是 Game_Action,而不是 Game_Battler。像 mp 这样的属性只存在于 Game_Battler 中。

Game_Action 本身没有直接返回消耗的方法,所以你需要稍微变通一下:

let action = BattleManager.inputtingAction();
let a = action.subject();
let skill = action.item();
let mpCost = a.skillMpCost(skill);

如果你需要将其写成单行,可以这样写:

BattleManager.inputtingAction().skillMpCost(BattleManager.inputtingAction().item())

或者你可以用一个函数稍微简化一下:

(a => a.subject().skillMpCost(a.item()))(BattleManager.inputtingAction())

谢谢你的帮助!你建议的代码给了我这个错误:“无法读取 null 的属性 mpCost”。我很确定高亮显示的技能是有 MP 消耗值的,那问题可能出在哪里呢?

我不确定你具体写了什么,但确实不存在 mpCost。正确的名称是 skillMpCost

这就是我在战斗中尝试选择技能时使用单行函数时遇到的错误。有趣的是,当我使用第一个单行脚本时,它曾提示相同的错误,但显示的是 ‘skillMpCost’ 而不是 ‘MpCost’;而在过去几个小时里,我反复调试时,第二个脚本始终报错 ‘MpCost’。有什么想法吗?

所以基本上,你的意思是你是直接使用了第二行代码,而且那里确实写的是 skillMpCost,但依然收到了关于 mpCost 的错误提示,对吧?

如果是这样的话,那很可能意味着你在一个不受支持的时间点调用了它。我想你需要想办法替换掉 BattleManager.inputtingAction() 这部分内容,以便在你需要调用它的时机能够正常工作。而且,如果你是想在玩家选择动作的_过程中_获取它(回想起来,这确实听起来像是你的情况),那你可能需要采用一种完全不同的方法。

换句话说,我需要更多关于你把这个脚本放在哪里的信息。