【RPGツクールMV】スクリプトで変数やスイッチを操作してみよう

アイキャッチがぞう ゲーム制作
スポンサーリンク

こんにちは、slashです。
今回はRPGツクールMV、
スクリプトで変数やスイッチを
操作してみよう!
というお話です。

私自身への備忘録の意味も込めて
基本的な使い方を書いておきます。

なぜスクリプトを使うの?

以前にもスクリプトについて
書きましたが、
多少なりともスクリプトが
使えれば面倒な処理を
短くまとめて記述できたり、
できることの幅が広がったりします。

変数の操作

変数の操作ウインドウ

スクリプトを使わずに操作するなら
イベントの「変数の操作」
変数に対して代入、加減乗除などの
操作ができます。

「スクリプト」から変数に関わる
操作を行う場合は以下のものを
覚えておくと良いでしょう。

変数の値を参照

$gameVariables.value(変数のID)

例:

$gameVariables.value(6)


と書けば、ゲーム内変数ID6の値
となります。

変数の操作で
「スクリプト」にチェックを入れ
以下の画像のように入力します。

すると、変数ID3「テスト用変数」に
変数ID6の値が代入されます。

スクリプトで書く場合は
$gameVariables.value(変数のID)
となりますが、

カッコ内にある
(変数のID)の部分も変数で
指定することもできます。
例えば、以下のように入力してみます。

例:
$gameVariables.value( $gameVariables.value(8) )
変数ID8の値が参照する変数IDとなる。

ちょっと複雑になりましたが、
スクリプトなしでは
できない指定のやり方も
できるわけです。

変数の値を変更

$gameVariables.setValue(ID ,値 )

スクリプトでこのように書くと
IDで指定した変数に
を代入することができます。

イベントエディタで
「スクリプト」を選び
$gameVariables.setValue(3 ,100)
と入力します。

スクリプトで代入

これで
変数ID3に100を代入することができます。
もちろん変数IDや代入する値を
変数で指定することも可能です。


$gameVariables.setValue(3 ,$gameVariables.value(4) )
変数ID3に変数ID4の値を代入

整数以外の型を扱う

ツクールMVの変数は
基本的に整数を扱いますが、
文字列を代入することもできます。

文字列の代入

代入で
“あいうえお”
とすれば「あいうえお」という
文字列が代入されます。

配列

[1 ,3 ,5]のように書いて
配列変数にすることもできます。

$gameVariables._dataを使ってみる。

$gameVariables._data[ID]

これでも、変数の中身を参照したり
代入などの演算ができます。

$gameVariables._data[5] = 3;
変数ID5に3を代入する。

$gameVariables._data[5] += 10;
変数ID5に10を加算する。

$gameVariables._data[5] = “あああ”;
変数ID5に「あああ」という文字列を代入する。

$gameVariables._data[5] = [3, 2, 8];
$gameVariables._data[5][0] += 10;

変数ID5に[3, 2, 8]という配列を代入し、
変数ID5の要素0番目に10を加算する。

$gameVariables._dataは
結構便利なので
私も重宝しております。

$gameVariables._dataの注意点

スポンサーリンク

$gameVariables._dataを使う時の
注意点というか、
留意しておくと良さそうなコトについて
書いておきます。

$gameVariables._dataで
変数の操作を行った場合は
表示の更新が自動で行われません。

エディタの「変数の操作」を使った場合と
$gameVariables._dataを使った場合とで
違いがわかる実験をしてみます。

実験1:「変数の操作」を使う

まず、マップに適当にイベントを配置し
1ページ目は以下のように設定します。

ページ1

グラフィックは男性キャラ
話しかけると
変数ID1に1を代入
という処理を行います。

次にイベントの
2ページ目を作成し、以下のように設定します。

2ページ

グラフィックは女性キャラ
ページの出現条件は
変数ID1が1以上の時です。

テストプレイを開始し、
このイベントに話しかけます。

結果1
イベントに話しかけると・・・
結果2
イベントのグラフィックが切り替わる

すると変数ID1に1が代入され、
ページ2の出現条件が満たされるため
イベントのグラフィックが即座に
女性キャラに切り替わります。

実験2:$gameVariables._dataを使う

先程の実験1と同じものを
$gameVariables._dataを使って
作成してみます。

ページ1の内容を以下のように変更します。

ページ1 スクリプト

実験1との違いは
変数の代入をスクリプトで
$gameVariables._data[1] = 1;
と入力している点のみです。
(画像の赤枠で囲った部分)

それ以外の設定は実験1と全く同じです。

さて、このイベントに話しかけると・・・

結果2-1
結果2-2
グラフィックが変わらない

話しかけても
グラフィックが変わりません。

変数1番には1が代入されており、
イベントページ2の出現条件は
満たされているのですが、
更新が行われていません。

この後に、
「スイッチの操作」「変数の操作」イベントで
スイッチや変数の操作を行ったり、
スクリプトで
$gameMap.requestRefresh();
と書いて実行させたりすると、
その時に表示の更新処理が行われ
キャラグラフィックも更新されます。

すたーちゃん
すたーちゃん

キャラグラフィックも
リアルタイムで更新
してくれないと困る

という場合は
気をつけておいた方が
よさそうですね。

ちなみに、
$gameVariables.setValue
値を更新した場合は
キャラグラフィックは即時更新されます。

コアスクリプトの「rpg_objects.js」を
見てもらえば
わかる人はわかるかと思いますが、
setValueを実行すると、
$gameMap.requestRefresh()も実行されるので
リフレッシュが行われます。

スイッチの操作

ゲーム内スイッチの参照、操作を
スクリプトで行う場合は
以下のように書きます。

$gameSwitches.value(スイッチID)
「スイッチID」の値を参照する。

$gameSwitches.setValue(スイッチID, 値)
「スイッチID」に「値」を代入する。

例:
$gameSwitches.value(6);
ゲーム内スイッチ6番の値を参照

スイッチの値はtruefalseとなり、
trueならスイッチがON
falseならスイッチがOFF
というコトになります。

例:
$gameSwitches.setValue(6, true);
スイッチID6をtrue(ONの状態)にする。

スイッチは条件分岐なんかで
よく使うと思いますが、
if文で分岐させるスクリプトを書くなら

if ($gameSwitches.value(6)) {
//ここに実行する内容を書く
};

このようにすれば
スイッチID6がtrue(ON)の時に
{}内が実行されます。

if (!$gameSwitches.value(6)) {
//ここに実行する内容を書く
};

であれば
スイッチID6がfalse(OFF)のときに
実行する分岐が作れます。

$gameSwitches._data
でもスイッチの操作を行えます。

例:
$gameSwitches._data[1] = true;
スイッチID1をONにする。

まとめ

スクリプトが使えれば
できることが増えます。

最初のうちは
ちょっと大変かもしれませんが、
慣れてくると面白いですよ!

コメント

  1. G.Assyu. より:

    初めまして。
    ゲーム内の変数を使って配列を作ったり、配列の中の値を変えたりする方法をずっと探していて、ここにたどり着きました。
    とても分かりやすく書いていただいており、とても参考になりました。
    他のページもおもしろそうな記事がたくさんありますので、色々読ませていただきます。
    ありがとうございました。

タイトルとURLをコピーしました