【プラグイン講座】まっさらなシーンを作る

プラグイン講座一日目

この講座では、ツクールMVのプラグイン機能を使って「新しい自作の画面を作る」ことを目指します
「プラグインってなんぞ?」という方には多分難しいと思うので、この講座の対象者は「ツクールMVでプラグインを導入したことがある人」にしたいと思います。
また、プラグイン制作にはトリアコンタンさん作の「デベロッパツール管理プラグイン」が非常に便利ですので、以下のURLからダウンロードして導入してください。
設定はデフォルトのままで構いません(使いやすいようにいじっても問題ないです)。
https://triacontane.blogspot.jp/2016/04/blog-post_23.html

「使うテキストエディタは何?」と言うご質問もあるかと思いますが、使い慣れたものなら何でもいいです(行数の表示くらいはできたほうがいいと思いますが)。
使い慣れたものが特にないというのであれば、Visual Studio Code(以下VSCode)を使ってみてください。
僕はVSCodeでプラグインを制作しています。
プラグインはUTF-8での保存が推奨されているので、この辺の保存形式もちゃちゃっと選べるものがいいですね(VSCodeはちゃちゃっと選べます)。

なおこの記事を書いているのはJavaScript二ヶ月目くらいのガチド素人ニートですので、内容の正確性は一切保証しません。
ちなみにこの講座の内容をマスターすれば、以下のような画面を制作することもできちゃいます(若干の誇張が混じってます)。

では準備が整ったところで、どのような形でプラグイン講座を進めていくか概説を記します。


1.まっさらなシーンを作る
2.画像を表示する
3.図形を描く
4.ウィンドウを表示する
5.選択肢のあるウィンドウを使ってみる

本日はこの中の1番「まっさらなシーンを作る」に挑戦しましょう。

シーンとは何か

そもそもシーンとは何でしょう。
答えは明確です。
「画面がヒョイッと切り替わった」ならシーンが遷移したことになります

全然明確じゃなくてわかりにくいですね。
例えばツクールMV製のゲームを起動するとタイトル画面が表示されますね。
これがタイトルシーンです。
コンティニューを選ぶとセーブデータを選ぶシーンが表示されますね。
これがロードシーンです。
データをロード後、普通はマップが表示されますね。
これがマップシーンです。
マップシーンからメニューボタンを押すと、メニュー画面が開きますね。
これがメニューシーンです。

とまあ、こんな感じでツクールMVはシーンごとに一つの機能をまとめています。
プラグインを自作すると、もともと用意されているもの以外のシーンを自分で作れちゃうんですね(例えばエネミーブックプラグイン。あれはScene_EnemyBookという新しいシーンを作成しています。僕の美容院プラグインも新しいシーンを作っています)。

シーン作りの前準備

まずは「何も表示されていないシーン」を作って見ましょう。
とりあえずこのファイルをダウンロードしてください(プラグインの定型です。各行の細かい意味は必要があれば後で説明します)。
SamplePlugin.js

「SamplePlugin」を自分の使いたいプラグイン名に変えればいいだけですね。
35行目のvar N = ‘SamplePlugin’;のところの変更もお忘れなく(まずはこのまま作っていくのをオススメします)。

このプラグインを導入すると――何もなりません
何の処理もしてないから当たり前ですね。

では空のシーンを作っていきましょう。

具体的な空のシーンの作り方

DLしたSamplePlugin.jsの下の方に「Scene_Sampleクラスの定義」というものがありますね。
この下にコードを書き足し、シーンを作っていきます。

まずはこう書いてください。


function Scene_Sample() {
this.initialize.apply(this, arguments);
};

Scene_Sample.prototype = Object.create(Scene_Base.prototype);
Scene_Sample.prototype.constructor = Scene_Sample;

これも定形のようなものです。
シーンを作るのに本質的ではないので意味の解説は省略します。
上記のコードの中にある「Scene_Sample」を別の文字に置き換えれば、違う名前のシーンが作れる、とだけ覚えておきましょう
詳しく知りたい方は、JavaScriptそのものについて勉強してください。
どのような意味なのかわかると思います(逆に言えばJavaScriptの表層しか知らない僕レベルの初心者が解説するのはおこがましいのです)。

ただ一点だけシーン作りに関わる大事な部分があります。
Scene_Base.prototype
ここです。
これは「ツクールにもともと備わっているScene_Baseの機能をScene_Sampleでも使いますよー」という意味です。
このScene_BaseをScene_Fileに変えれば「ツクールにもともと備わっているScene_Fileの機能を使いますよー」という意味になります。

どのようなシーンがツクールに備わっているのかは、jsフォルダ内のrpg_scenes.jsをご覧ください。
コードの量が膨大なので、JavaScript自体の勉強をしていないと読むのはちょっと難しいと思います。
「とりあえずScene_Base使っときゃ空のシーンは作れる」と覚えておいてもいいですね(他の機能を上書きしたい場合などはまた話が違ってきますが、ここではあくまでも「新しいシーンを作る」ことが目的です)。

さて、コードを書き足すことはできましたか?(コピペで大丈夫です)
これでシーンの完成です。

えっ、嘘じゃないです。
本当です。

簡単でしょう?
ツクールさまさまですね。

シーンへのアクセス方法

では作ったシーンへアクセス(表示)してみましょう。

まずは「プラグインコマンドの設定」と書いてあるコードの部分を見てください(39行目あたり)。
何やら色々と書いてありますが、まあ細かい意味は例のごとくJavaScriptそのものの勉強をすればわかると思います。
シーン作りには本質的でないので省略しまして、
_Game_Interpreter_pluginCommand.call(this, command, args);
と書かれている行の下に以下のコードを書き足してください。


if (command === ‘Go_SampleScene’) {
SceneManager.push(Scene_Sample);
}

「Go_SampleScene」と書かれてある部分がいわゆるプラグインコマンドになります。
これを「Unko」と変えれば、プラグインコマンド「Unko」のできあがりですね。

で、中括弧で囲まれている中身の
SceneManager.push(Scene_Sample);
ここが大事ですね。
これで「Scene_Sampleというシーンに行きますよー」と命令しているわけです。
例えばScene_Unkoを作っているなら、SceneManager.push(Scene_Unko);とすればシーンウンコにアクセスできます。

では完成したファイルを保存して、実際にプラグインコマンドを使ってサンプルシーンにアクセスしてみましょう(適当なイベントを作ってプラグインコマンドを実行させてください)。

どうですか?
真っ暗な画面が表示され、何のキー入力もできなくなりましたか?

もしそうなったら、成功です。
これで空のシーンが表示されたことになります。

お疲れ様でした。
次回はこのシーンに画像を表示させ、ついでに画像を変形させてみましょう。

フォローする

『【プラグイン講座】まっさらなシーンを作る』へのコメント

  1. 名前:ツキミ 投稿日:2018/01/05(金) 12:14:09 ID:c15f954b6

    ツクールデフォルトのメニューに飽きてしまったので、悩んでる時にちょうどこんな講座が目に入りまして……!
    講座の続きを待ってます!

    • 名前:ツミオ 投稿日:2018/01/05(金) 17:32:47 ID:372a1cb9c

      ツキミさん、こんにちは。
      閲覧ありがとうございます。

      実は講座自体は完結しています。
      制作物一覧のプラグイン制作講座を参照してみてください。