【MV講座】プラグインパラメーターを導入する

前回はちょっぴり大変でしたね。
今回はたぶんラクです。
たぶん。

プラグインパラメーターを導入する箇所

前回作成したコードに

this.scrollBackImages.setMainSpeed(1,1);
this.scrollBackImages.setSubSpeed(1,1);

上記のようなコードがありましたね。
この1はスクロール速度を表すわけですが、コードの中に直接1を埋め込むよりも、プラグインパラメーターで指定できた方が便利だと思いませんか?
プラグインの利用者にも優しいはずです。
というわけで、プラグインパラメーターを適用できるようにしましょう。

なお、updateOriginPosition()内の「this._mainSpeedX」などの部分を直接プラグインパラメーターで設定できるようにするのはオススメしません
なぜなら、NTMO.TTTT.ScrollBackImagesクラスがプラグインパラメーターに依存してしまうため、他で流用する際にプラグインパラメーターの箇所を書き替えなければならなくなるからです。
なので、今回はNTMO.TTTT.ScrollBackImagesクラスのコードを変えるのはなく、NTMO.TTTT.ScrollBackImagesクラスを利用しているScene_Titleクラスの方を変えていきます。

とりあえずプラグインパラメーターを作ってみる

プラグインの上の方を見ると、

/*:ja
* @plugindesc タイトル画面を拡張するプラグインです。
* @author ツミオ

こんなのが見つかるかなと思います。
この下にプラグインパラメーターの設定を追加していきます。
とりあえず以下のようにコピペしてみてください。

* @param メイン背景のX方向の速度
* @type number
* @min -255
* @max 255
* @decimals 2
* @desc メイン背景のX方向の速度を設定します。
* @default 0

ツクールMVを起動して、プラグイン管理から画面をチェックしてみてください。
パラメータの項目が追加されていますでしょうか?
されていたら成功です。
各項目を説明していきましょう。

プラグインパラメーターの各項目の意味

各項目の意味を書いていきます。

param→プラグインの名前を表します
type →型を表しますが、結局は文字列型に変換されるのかな? と思いました
min →設定できる数値の最低値
max →設定できる数値の最大値
decimals→小数点の何桁まで表示するか
desc →パラメーターをダブルクリックした時に表示される説明
default→パラメーターの初期値

typeの欄のnumberは、数値型であることを意味します
と、基本がわかったところで、残りのパラメーターも追加しときましょう。

* @param メイン背景のY方向の速度
* @type number
* @min -255
* @max 255
* @decimals 2
* @desc メイン背景のX方向の速度を設定します。
* @default 0
* @param サブ背景のX方向の速度
* @type number
* @min -255
* @max 255
* @decimals 2
* @desc サブ背景のX方向の速度を設定します。
* @default 0
*@param サブ背景のY方向の速度
* @type number
* @min -255
* @max 255
* @decimals 2
* @desc サブ背景のY方向の速度を設定します。
* @default 0

プラグインパラメーターを取得する前準備

さてツクールMV側でプラグインパラメーターを設定できるようになりました。
ではどうやってコードの中でプラグインパラメーターを取得するのでしょうか?
色々と方法はあるようなのですが、僕はトリアコンタンさんが公開しているプラグインから毎回こんなコードを拝借しています

var getParamString = function(paramNames) {
if (!Array.isArray(paramNames)) paramNames = [paramNames];
for (var i = 0; i < paramNames.length; i++) { var name = PluginManager.parameters(pluginName)[paramNames[i]]; if (name) return name; } return ''; };
var getParamNumber = function(paramNames, min, max) {
var value = getParamString(paramNames);
if (arguments.length < 2) min = -Infinity; if (arguments.length < 3) max = Infinity; return (parseInt(value) || 0).clamp(min, max); };

なにをやっているのか、僕もあんまりわかりません。
ただ直接プラグインパラメーターを取得するより、これらのコードを介して取得した方が良さげなので(じゃないとわざわざこんなコード作りませんよね)、僕はこれを拝借しています。
テンプレみたいなもんだと思ってもらって大丈夫です。

ついでに今回は、以下のコードも追加しておいてください(これはトリアコンタンさんが書いたものではありません)。

var getParamDouble = function(paramNames, min, max) {
var value = getParamString(paramNames);
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return Number(value);
};

注*このコードは、必ず名前空間の宣言のすぐ下に設置してください。

プラグインパラメーターを実際に取得する

先ほど書いたコードの下に、以下のコードを追加してください。

////=============================================================================
//// Get and set pluguin parameters.
////=============================================================================
var param = {};
//Background parameter.
param.speed_mainBackgroundX = getParamDouble([‘MainBackgroundSpeedX’, ‘メイン背景のX方向の速度’]);
param.speed_mainBackgroundY = getParamDouble([‘MainBackgroundSpeedY’, ‘メイン背景のY方向の速度’]);
param.speed_subBackgroundX = getParamDouble([‘SubBackgroundSpeedX’, ‘サブ背景のX方向の速度’]);
param.speed_subBackgroundY = getParamDouble([‘SubBackgroundSpeedY’, ‘サブ背景のY方向の速度’]);

これでパラメーターの値が各変数に代入されます。
ちなみに、この「param.ホニャララ」となっている変数は、このプラグインの中ならほぼどこでも使えます。
ワオ便利!
(が、こういう「どこでも使える」変数が増えてくると管理が難しくなるようですよ。ワオ!)

getParamDoubleというのは、先ほど書いた関数ですね。
getParamDoubleのあとは普通のメソッドと同じように()でくくり、その中に[]でなんやら書いていますね。
これはパラメーター名です。
「おいおいおいおい。パラメーター名がなんで2つもあるんだよ、それかしくねぇ? おれっち、そんなの聞いてねぇよおいおいおいおい」と思われた方もいるかと思います。

僕は最近グローバルなニートを目指しているので、プラグインを極力英語にも対応させるようにしています(英語も勉強中なので色々と間違ってる可能性が高いですが)。
その一環として、この講座の中では特に書いていませんが、英語バージョンのパラメーターも用意するようにしています
というわけで、左側に英語バージョンのパラメーター名を書き、右側に日本語バージョンのパラメーター名を書いているのですね。
別に日本語パラメーター名だけでも大丈夫です。

取得したパラメーターを実装する

Scene_Title.prototype.createBackground()内の以下の二行を変更します。

this.scrollBackImages.setMainSpeed(1,1);
this.scrollBackImages.setSubSpeed(1,1);

この1の部分が

this.scrollBackImages.setMainSpeed(param.speed_mainBackgroundX,param.speed_mainBackgroundY);
this.scrollBackImages.setSubSpeed(param.speed_subBackgroundX, param.speed_subBackgroundY);

このように先ほど作った変数に置き換わるわけですね。
paramがプラグインパラメーターを表し、その後に続く個別の名前も何のパラメーターか説明してくれていますので、「1」という無味乾燥な数字よりもわかりやすいですね。
ただ、ちょっとパラメーター名が長くて見にくいので、他の変数に一回代入してもよいかと思います。

実行してみる

プラグインパラメーターを設定したあと(初期値は0になっていますので、別の数値を設定してみてください)、実行してみてください。
パラメーターの数値を大きくすると、それだけ速く移動しているのがわかるかなと思います。
直接コードをいじるより、こちらのほうが便利ですね。

次回の予定

次回も引き続きプラグインパラメーターを設定してきます。
それに伴い、今までほぼ触っていなかったサブ画像を使った、ちょっとおもしろい効果を実装しようと思います。

今日は一気に5つも記事を書いて疲れたので、残りは明日以降に!

フォローする