【RPGツクールMV】他マップの情報を変数にロードするために調べたページメモ(外部ファイルを読み込む)
習慣化70日目
セルフスイッチをコントロールするプラグインを作成しようとしている。
他マップのイベントの個数を取得したくて、色々調べたページについてメモしておく。
ツクマテで質問させてもらったのだけど、そのなかで、他マップのロードはあまり推奨しない、というご意見をいただいた。
推奨じゃないのに色々時間使ってもったいないかもなぁ、とも思いつつ、なんだかもう少ししたら出来るかもという前方に見える小さい光を目指して、いつまでもウロウロし続けてしまった。こういう本筋とは関係ないところにシコタマ時間をかけるのは僕の悪いクセで、でもこれのおかげで今の仕事があるような気もしていて、なかなかやめられない。この辺の考え方もいつかメモしておきたいなぁ。
困っていたこと
ファイルの読み込み処理がうまくいかず試行錯誤していた。
読み込み自体は行っていたが、非同期処理のため、読み込み前に参照しようとしてエラーになっていた。
どこかで同期が完了するまで待つ必要があるらしい。
単純に値を取得した直後に、値が null じゃなくなるまで while ループするようにしたりしたが、それじゃダメだった。
解決策:XMLHttpRequestに同期処理するオプションを指定した
ツクマテでこのオプションについて教えてもらった。
これを指定することで、ファイルをロードしていた処理が同期処理になるようだった。
別で読み込み処理を待つのではなく、ロードするまでここで待ってくれるっぽい。
調べたときのページメモ
指定したマップのイベントの個数を取得したい
https://tm.lucky-duet.com/viewtopic.php?f=23&t=9715&p=36559#p36559
ツクマテで質問させていただいた。
いつもお世話になっている。
別のマップの「表示名」取得について
https://tm.lucky-duet.com/viewtopic.php?t=5062
今いるマップの情報は $dataMap に入るが
他マップの情報は、読み込まれていないということだった。
そこで、別の変数にロードしようと調べ始めた。
プラグイン「文章を外部CSVファイルで記述する(4行以上でも可)」
https://forum.tkool.jp/index.php?threads/プラグイン「文章を外部csvファイルで記述する-4行以上でも可-」.4006/
他マップの情報は、下記に格納されるようだった。
data/
L Map001.json
L Map002.json
L Map003.json
……
そのため、このファイルを直接指定して読み込めばいけるのでは? と思って参考にさせていただいた。
結局はよくわからなかったが、今後別の処理のときに参考にさせてもらうかも。
RPGツクールMVにおける外部ファイルの読み込みについて
https://tm.lucky-duet.com/viewtopic.php?t=9518
ゲーム起動時に読み込むのであれば、ここにある方法そのままでいけそう。
isReadyの考え方とか使い方とかわかりやすい。
SetWaitModeはその実、何をwaitしているのか?
https://qiita.com/EYN_kenzaki/items/f936f79b10de0c046829
色々教えていただいた剣崎さんのQiitaの記事。
Waitするところの挙動がわかりやすくイメージできた。
XMLHttpRequest
https://ja.javascript.info/xmlhttprequest#ref-303
各オプションについて。
非同期処理から同期処理に変更するオプションについて確認した。
xhr.open(method, URL, [async, user, password])
・method – HTTPメソッド. たいてい "GET" か "POST" です
・URL – リクエストURL。文字列で、URL オブジェクトもOKです。
・async – 明示的に false が指定されている場合、リクエストは同期になります。
open メソッドの3番目のパラメータ async が false が設定されていた場合、リクエストは同期になります。
つまり、JavaScript の実行は send() で止まり、レスポンスが返ってきたときに再開されます。alert や prompt コマンドにやや似ています。
ここの解説でも、あまり推奨しない、というようなことが書いてあった。