グローバル関数からインタプリタのインスタンスを操作する方法【ツクールMV】

はいどーもこんばんはニートです。
本日はツクールMVの小ネタを紹介したいと思います。
具体的には「グローバル関数からインタプリタのインスタンスを操作する方法」です。

ナンノコッチャ

「グローバル関数からインタプリタのインスタンスを操作する方法」と言われてもナンノコッチャという方が多いと思うので、具体例を出します。
ツクールMVからスクリプトを操作するとき(スクリプトコマンド)、例えば以下のようなコードを書いたことはないでしょうか。

これで対象イベントにアクセスできます。
座標を取得したり、他にも何やらかんやら自由に調理できます。

しかしスクリプトコマンドは行数の制限があるため、プラグインのグローバル関数で処理をまとめておいて、それをスクリプトコマンドから呼びたい場合があるようです。
例えばグローバル空間に

と書いておき、スクリプトコマンドでは単に

と呼ぶだけにしたい、ということですね。

問題点

上記のhogeFunc内で例えばスクリプトコマンドで書くような感じで

と書くとエラーが出ます。
スクリプトコマンド上ではthisがインタプリタを指しますが、グローバル関数はそうではないからです。
しかしグローバル関数からインタプリタにアクセスする簡単な方法があります。

まずプラグイン側のコードを以下のようにします。

そしてスクリプトコマンド側を以下のようにします。

たったこれだけです!
理屈としては、スクリプトコマンドのthisが指し示すもの(インタプリタ)を、hogeFuncの引数で受け取り、それをhogeFunc内で使っているだけです。

ただうっかりthisを渡すのを忘れた場合、当然エラーが発生します。
そこだけお気をつけください。

終わりに

いかがでしたでしょーか。
プラグインからインタプリタを操作したい的な話を聞いたのがこれで二度目だったので、まとめてみました。

ほなそんな感じでまた。

フォローする