「選択中」というのは、戦闘スキルメニューでカーソルが現在かかっているスキルを指します。
return BattleManager.inputtingAction().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);
もし1行で記述したい場合は、次のようになります。
BattleManager.inputtingAction().subject().skillMpCost(BattleManager.inputtingAction().item())
あるいは、関数を使って少し簡略化することもできます。
(a => a.subject().skillMpCost(a.item()))(BattleManager.inputtingAction())
ご協力ありがとうございます!ご提案いただいた内容でこのエラーが発生しました:「null のプロパティ mpCost を読み取れません」。強調されたスキルには MP コストがあることは確実なので、何が問題なのでしょうか?
何を正確に書かれたのかはわかりませんが、確かに mpCost は存在しません。skillMpCost です。
バトルでスキルを選択している際に、1行の関数を使用しようとするとこのエラーが出ます。面白いことに、最初の1行スクリプトを使用しているときは「MpCost」の代わりに「skillMpCost」と表示されたことがありますが、私が触っている間、2番目のスクリプトは常に「MpCost」を返しています。何か心当たりはありますか?
つまり、2行目はそのまま使っていて、確かに skillMpCost と書かれているのに、mpCost に関するエラーが出ている、ということですね?
もしそうなら、おそらくサポートされていないタイミングで呼び出している可能性が高いです。おそらく、この処理を呼び出す必要があるタイミングで機能するように、BattleManager.inputtingAction() の部分を置き換える方法を考え出す必要があるでしょう。そして、プレイヤーがアクションを選択している 最中 にそれを得ようとしている場合(振り返ってみると、実際そう聞こえますね)、かなり異なるアプローチが必要になります。
つまり、このスクリプトをどこに配置しているかについて、もう少し詳細な情報が必要です。