メニュー内のコマンド直接呼び出しかたはありますか?

ネズミ
記事: 2
登録日時: 2016年10月12日(水) 14:16

メニュー内のコマンド直接呼び出しかたはありますか?

投稿記事by ネズミ » 2016年10月12日(水) 14:33

こんにちは

最近ウディタからツクールmvに切り替えたのですが……

ちょっとした質問があり、書き込みます。

基本メニューの装備画面やスキル画面等の直接的に呼び出す方法はありますか?
例えばマップコモンで装備画面等を直接呼び出し、メニューを開かずに装備入れ替える。等です。

これが出来れば、色んな事が出来そうなんですが……。
(もしかしたら自分が無知で、本当は出来るのかも知れませんが)
一応、スクリプトで呼び出せるのかな?と思ったのですがイマイチ、分からなかったので。

よろしくお願いします

名無し蛙
記事: 38
登録日時: 2015年11月23日(月) 02:46

Re: メニュー内のコマンド直接呼び出しかたはありますか?

投稿記事by 名無し蛙 » 2016年10月12日(水) 20:24

どうもお疲れ様です。

出来ると思いますけど3点くらい注意がありますね。
対象の画面を開く場合はイベントコマンド>スクリプトで
SceneManager.pushで指定すれば直接画面を呼び出す事が出来ます。

ステータス画面がScene_Status。スキル画面がScene_Skill。
装備画面がScene_Equip。アイテム画面がScene_Item。
アイテム画面を直接呼び出す場合は

コード: 全て選択

SceneManager.push(Scene_Item);

です。

注意点その1はステータス、装備、スキルは事前に対象アクターを設定する必要がある事。
これは$gameParty.setMenuActor(actor);というものを使います。
パーティの並び順で設定する場合は

コード: 全て選択

// 並び順0番(先頭)のアクターの装備画面を開く
var actor = $gameParty.allMembers()[0];
$gameParty.setMenuActor(actor);
SceneManager.push(Scene_Equip);


アクターIDで設定する場合は

コード: 全て選択

// アクターID2番のステータス画面を開く
var actor = $gameActors.actor(2);
$gameParty.setMenuActor(actor);
SceneManager.push(Scene_Status);


と言った具合ですかね。

注意点その2はデフォルトでパーティメンバーの切り替え機能がある事。
例えばステータス画面を開いてる時にQ/Wキーを押せば次のアクターに変わりますが
この切り替え機能を一時的に消す事は基本的に出来ないと思います。
わざわざ直接指定で開いた場合は少し恰好がつかないのではないかと。
一応アクターIDで指定する場合はパーティ非加入メンバーも指定出来ると思いますがあまりしない方が良いと思います。

注意点その3は顔グラフィックのローディングに関する話ですね。
ツクールMVにはゲーム中、画像を最初に読み込んだフレームではその画像データを使用出来ないという仕様があります。
メニュー画面ではこの仕様を回避する為にローディング待ち時間を設けているのですが
メニュー画面を直接通さずにスキル画面等を呼び出した場合は顔グラフィックが表示されないのではないか、と思います。
これはゲーム本番中ならどこかしかで顔グラフィックを表示していると思うので気にならないと思いますが
テストプレイの時は気になるかもしれませんね。
一応回避方法としては

コード: 全て選択

$gameParty.allMembers().forEach(function(member) {
    ImageManager.loadFace(member.faceName());
});
this.setWaitMode('image');

この処理も追加すればパーティの顔グラフィックのローディング完了すると思います。
ネズミ
記事: 2
登録日時: 2016年10月12日(水) 14:16

Re: メニュー内のコマンド直接呼び出しかたはありますか?

投稿記事by ネズミ » 2016年10月13日(木) 10:27

うゎー、細かいやり方の説明ありがとうございます!
それに注意点までも!

痒いところまで届く、説明に感激しました。
なんだか専門家みたいですね!

早速、ゲームに取り込んで、色々やってみます!
ありがとうございました。

“MV:質問” へ戻る