返信先: 【解決】NUUN_Resultのパッチプラグインを作りたい

#ツクルーム フォーラム RPGツクールMZ (RPG Maker MZ) 【解決】NUUN_Resultのパッチプラグインを作りたい 返信先: 【解決】NUUN_Resultのパッチプラグインを作りたい

#633
DarkPlasma
参加者

Window_ResultActorStatus はNUUN_Resultプラグイン内で定義されている内部クラスであり、グローバルスコープに公開されていません。そのため、パッチプラグインから直接アクセスすることができません。これがエラーの原因です。

 

これは真ですが

 

Window_ResultActorExp はコアスクリプトで定義されているため、グローバルスコープに存在し、パッチプラグインからアクセス可能です。

 

これは嘘です。どちらのクラスもコアスクリプトには存在しません。

NUUN_Result.jsでは、 Window_ResultActorExp クラスを明示的にグローバルスコープに公開しています。

 

window.Window_ResultActorExp = Window_ResultActorExp;

 

一方、 Window_ResultActorStatus ではこれをしていません。

 

どうやら、直接書き換えるほかなさそうですね。

 

実はパッチプラグインで対処する方法がないわけではありません。
Windowクラスが直接グローバルスコープに展開されていなくとも、そのクラスのインスタンスはScene_Battleが保持しています。


(() => {
'use strict';
const _createResultActorStatusWindow = Scene_Battle.prototype.createResultActorStatusWindow;
Scene_Battle.prototype.createResultActorStatusWindow = function() {
_createResultActorStatusWindow.call(this);
this._resultActorStatusWindow.drawActorFace = function (data, actor, x, y) {
const w = ImageManager.faceWidth;
const h = ImageManager.faceHeight;
const x2 = Math.floor(x + w / 2);
const y2 = y + Math.floor(h * 2.2 / 4);
this.drawActorCharacter(actor, x2, y2);
};
}
})();

 

インスタンス生成時に行われる処理には気をつける必要がありますし、このクラスの別のインスタンスが作られたりする場合は厄介ですが、今回は問題ないように思います。

  • この返信は7ヶ月、 3週前にDarkPlasmaが編集しました。理由: markdownのコードブロックが正常に機能していなさそう
ゲスト