軽く確認した範囲だと多分ウィンドウレイヤの仕様じゃないですか。
シーンクラスのチルドレンにウィンドウレイヤというものがあり
コード: 全て選択
Scene_Base.prototype.createWindowLayer = function() {
this._windowLayer = new WindowLayer();
this._windowLayer.x = (Graphics.width - Graphics.boxWidth) / 2;
this._windowLayer.y = (Graphics.height - Graphics.boxHeight) / 2;
this.addChild(this._windowLayer);
};
addWindowするとウィンドウレイヤによって管理されます。
コード: 全て選択
Scene_Base.prototype.addWindow = function(window) {
this._windowLayer.addChild(window);
};
そしてウィンドウレイヤのrender処理で
下に存在するウィンドウを描画しないように特殊な処理を組んでるみたいですね。
コード: 全て選択
WindowLayer.prototype.render = function render(renderer) {
if (!this.visible) {
return;
}
const graphics = new PIXI.Graphics();
const gl = renderer.gl;
const children = this.children.clone();
renderer.framebuffer.forceStencil();
graphics.transform = this.transform;
renderer.batch.flush();
gl.enable(gl.STENCIL_TEST);
while (children.length > 0) {
const win = children.pop();
if (win._isWindow && win.visible && win.openness > 0) {
gl.stencilFunc(gl.EQUAL, 0, ~0);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
win.render(renderer);
renderer.batch.flush();
graphics.clear();
win.drawShape(graphics);
gl.stencilFunc(gl.ALWAYS, 1, ~0);
gl.stencilOp(gl.REPLACE, gl.REPLACE, gl.REPLACE);
gl.blendFunc(gl.ZERO, gl.ONE);
graphics.render(renderer);
renderer.batch.flush();
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
}
}
gl.disable(gl.STENCIL_TEST);
gl.clear(gl.STENCIL_BUFFER_BIT);
gl.clearStencil(0);
renderer.batch.flush();
for (const child of this.children) {
if (!child._isWindow && child.visible) {
child.render(renderer);
}
}
renderer.batch.flush();
};
つまりこのrender処理をスーパークラスのrender処理に差し替えれば良いのでは。
例えば装備画面限定でウィンドウレイヤのレンダー処理の仕様を元に戻すのなら
コード: 全て選択
const _Scene_Equip_createWindowLayer = Scene_Equip.prototype.createWindowLayer;
Scene_Equip.prototype.createWindowLayer = function() {
_Scene_Equip_createWindowLayer.apply(this, arguments);
this._windowLayer.render = PIXI.Container.prototype.render;
};
という処理を自作プラグイン内に書き加える、とか。
そもそもなんでこんな特殊な処理を組んでるのかと言えば
アイテム/スキル画面でアクター選択ウィンドウを出した時に見易くする為、だと思います。
ので、全てのWindowLayerに変更を適用しても良いのなら
コード: 全て選択
WindowLayer.prototype.render = PIXI.Container.prototype.render;
だけでも良いです。