質問失礼します。コモンイベントを用いて、イベントを一括で整理できるようにしているのですが、イベント内でコモンイベントを実行して、そのコモンイベントの中でthis.character().xなど入力するとエラーが発生してしまいます。これはおそらく、コモンイベント自体の座標を求めようとしてしまったために起こっているのだと思いますが、コモンイベントから呼び出し元のイベントの座標を取得する方法があればご教授願います。
(トリアコンタン様のテンプレートイベントプラグインの呼び出し元マップのイベントでコモンイベントを使用しています)
イベント内部で実行したコモンイベントから元のイベントのx, y座標を取得する方法
- Plasma Dark
- 記事: 669
- 登録日時: 2020年2月08日(土) 02:29
- 連絡を取る:
Re: イベント内部で実行したコモンイベントから元のイベントのx, y座標を取得する方法
まず、エラーの原因をしっかり確認し、分析しましょう。
スタックトレースを確認してください。
Game_Interpreter.prototype.character 関数を読んで、その戻り値がnullになる原因を認識してください。
イベントからコモンイベントを呼び出しただけでは、nullにはなりません。
何らかの原因で、Game_Interpreterインスタンスの持つ_mapId, _eventIdがそれぞれ、現在いるマップで起動したイベントのIDになっていないのだと思われます。
この原因を明らかにした上で解決策を検討する必要があります。
使用しているプラグインやイベントの起動方法を確認してください。
Game_Interpreter.prototype.setup にブレークポイントを設定し、対象のイベントやそこから呼び出されるコモンイベントが起動した際に何がどこから渡されたのか確認するのが手っ取り早いと思います。
F12を押して開発者コンソールを開き、該当行の番号をクリックすることでブレークポイントを設定できます。
処理が設定したブレークポイントに到達するとそこで止まります。
Watchにその時点での結果を確認したい式を入力することで、スクショのように値を確認できます。
もちろん、VSCodeなどでステップ実行できるならそれでも構いません。
古いのでそのまま使えるものではありませんが、VSCodeでローカルデバッグをする際は以下の記事が参考になります。
(Debugger for Chromeはもう使わないので不要である、など、当時とは状況が変わっている部分があるので参考までに)
https://qiita.com/Mihiraghi/items/a68440e597373aabba02
そして、質問の際は確認した情報をしっかり共有するようにしてください。
使用しているプラグインの名前、配布元URL、バージョンはもちろん、新規プロジェクトで状況を再現するための試行錯誤を行って、その結果がどうであったかも重要です。
今回の例で言えば、イベントから呼び出したコモンイベントの中で this.character().x を呼び出すだけの新規プロジェクトを作って動かせば、原因の調査に大いに役立ったはずですね。
スタックトレースを確認してください。
Game_Interpreter.prototype.character 関数を読んで、その戻り値がnullになる原因を認識してください。
イベントからコモンイベントを呼び出しただけでは、nullにはなりません。
何らかの原因で、Game_Interpreterインスタンスの持つ_mapId, _eventIdがそれぞれ、現在いるマップで起動したイベントのIDになっていないのだと思われます。
この原因を明らかにした上で解決策を検討する必要があります。
使用しているプラグインやイベントの起動方法を確認してください。
Game_Interpreter.prototype.setup にブレークポイントを設定し、対象のイベントやそこから呼び出されるコモンイベントが起動した際に何がどこから渡されたのか確認するのが手っ取り早いと思います。
F12を押して開発者コンソールを開き、該当行の番号をクリックすることでブレークポイントを設定できます。
処理が設定したブレークポイントに到達するとそこで止まります。
Watchにその時点での結果を確認したい式を入力することで、スクショのように値を確認できます。
もちろん、VSCodeなどでステップ実行できるならそれでも構いません。
古いのでそのまま使えるものではありませんが、VSCodeでローカルデバッグをする際は以下の記事が参考になります。
(Debugger for Chromeはもう使わないので不要である、など、当時とは状況が変わっている部分があるので参考までに)
https://qiita.com/Mihiraghi/items/a68440e597373aabba02
そして、質問の際は確認した情報をしっかり共有するようにしてください。
使用しているプラグインの名前、配布元URL、バージョンはもちろん、新規プロジェクトで状況を再現するための試行錯誤を行って、その結果がどうであったかも重要です。
今回の例で言えば、イベントから呼び出したコモンイベントの中で this.character().x を呼び出すだけの新規プロジェクトを作って動かせば、原因の調査に大いに役立ったはずですね。
Re: イベント内部で実行したコモンイベントから元のイベントのx, y座標を取得する方法
回答ありがとうございました。コンソールから確認したところ、this.characterがnullであることが確認できました。
あと、質問内容の再現性についてのご指摘ありがとうございます。今度からは気をつけたいと思います
あと、質問内容の再現性についてのご指摘ありがとうございます。今度からは気をつけたいと思います
Re: イベント内部で実行したコモンイベントから元のイベントのx, y座標を取得する方法
ループ内処理で、ウェイトがコモンイベントの中にあったものを、ループ直下にすることで解決しました。お騒がせしてすみません(重要な質問内容が抜けてました)