アドオンとは、Uniteのゲームの挙動を変更したり、新たな機能を追加したりするものです。
Uniteのシステムは、C#というプログラミング言語で書かれており、アドオンは、その内容に加筆修正を施すことで、新たなる機能を追加しています。
アドオンは、Unityのパッケージの一部として配布され、unitypackageという拡張子になっています。
●アドオンファイルの一例
ここでは、簡単なアドオンの作成方法やアドオンをプロジェクトへインポートする方法を解説していきます。
Uniteのアドオンは、これまでのツクール(Maker)にあったプラグインと、ほぼ同等の機能になります。
特に、RPGツクールMZにあったプラグインコマンドなどの仕様を受け継いでおり、これまでのツクールに慣れた方なら、すぐに使い方が理解できるでしょう。
アドオンとプラグインとの違いのひとつは、プラグインが、単一のスクリプトの(そして拡張子がjsの)ファイルだったのに対し、
アドオンはプログラムのソースコードだけでなく、必要な素材も含めたパッケージになっているという点です。
それでは簡単なアドオンを1つ作ってみましょう。
「セルフスイッチAをOFFからONに変更する」というアドオンを作成する手順を説明します。
アドオンを使用せずとも既存機能で事足りますが、ここではアドオン作成の大まかな流れが理解できたらと思います。
プロジェクトフォルダ内の「Asset/RPGMaker/Codebase/Add-ons」フォルダ配下にフォルダを作成します。
ここでのフォルダ名はこの後作成するスクリプトと同名にする必要がある為、意味のある名前を付けることをオススメします。
今回はひとまず「AddonSample」とします。
先ほど作成したフォルダー内にフォルダ名と同じCsファイルを作成します。
任意のエディタで作成したファイルを開き、以下のように入力します。
/*:
*
*/
/*:ja
*
*/
namespace RPGMaker.Codebase.Addon {
public class AddonSample {
}
}
これだけだとなんのことか分からないので1つずつ説明します。
1~3行目:英語でアドオンの説明を記述します
5~7行目:日本語でアドオンの説明を記述します
9行目:namespeceを記述します。Uniteのアドオンルールとしてのnamespaceには必ず「RPGMaker.Codebase.Addon」を指定します
10行目:クラス名を記述します。クラス名はファイル名と同じ名前を記入します
5~7行目の部分に以下コメントをコピー&ペーストします。
/*:ja
* @addondesc セルフスイッチを変更する
* @author Author
* @help 任意のセルフスイッチのON/OFFを切り替える
*
* @command SetSelfSwitchValue
* @text セルフスイッチ変更
* @desc セルフスイッチに値を設定します。
*
* @arg SelfSwitch
* @text セルフスイッチ
* @desc セルフスイッチを指定
* @type select
* @option A
* @option B
* @option C
* @option D
* @default A
*
* @arg Value
* @text 設定値
* @desc セルフスイッチの値を指定
* @type boolean
*/
9,10行目部分に以下ソースコードをコピー&ペーストします。
詳しい説明は省きますが、引数としてセルフスイッチ(A~D)とbool値(true,false)を受け取り、セルフスイッチを指定した値で上書きします。
using System.Collections.Generic;
using RPGMaker.Codebase.CoreSystem.Knowledge.DataModel.Runtime;
using RPGMaker.Codebase.Runtime.Addon;
using RPGMaker.Codebase.Runtime.Common;
namespace RPGMaker.Codebase.Addon {
public class AddonSample {
public void SetSelfSwitchValue(int selectSelfSwitch, bool selectValue){
var eventId = AddonManager.Instance.GetCurrentEventId();
var saveDataModel = DataManager.Self().GetRuntimeSaveDataModel();
var selfSwitchData = saveDataModel.selfSwitches.Find(selfSwitch => selfSwitch.id == eventId);
if (selfSwitchData == null){
selfSwitchData = new RuntimeSaveDataModel.SaveDataSelfSwitchesData();
selfSwitchData.id = eventId;
selfSwitchData.data = new List<bool>() { false, false, false, false };
saveDataModel.selfSwitches.Add(selfSwitchData);
}
selfSwitchData.data[selectSelfSwitch] = selectValue;
}
}
}
スクリプトの上部に記載するコメント部分(/* */で囲まれた箇所)ではRPGツクールMZのアノテーションの大部分が使えます。 RPGツクールMZ プラグイン講座
但し、以下の点にご注意ください。
基本RPGツクールMZと同じものが実装済みです。
但し、RPGツクールMZで使用可能だった以下のアノテーションはUniteでは使用不可能です。(今後の実装予定はありません)
@dir, @require, @requiredAssets, @noteParam, @noteDir, @noteType, @noteData
2次元配列を[][]で指定できるようにしました。
パラメータの型は以下のように変化しています。
integer→int
number→double
boolean→bool
select→int
struct→string(JSON)
array→string(JSON)
マップIDがRPGツクールMZでは数値だったのがUniteでは文字列に変わるなど、typeに何が格納されるかが変化しているので注意してください。
アドオンのコンストラクタの引数の数と型は、アノテーションのアドオンパラメータと一致させる必要があります。
アドオンコマンドのメソッドについても、引数の数と型は、アノテーションのアドオンコマンド引数と一致させる必要があります。
DataManagerはUniteのコアとなるデータを取り扱っています。DataManagerを通じて通常のイベントでは出来ないこともアドオンによって可能になります。
Uniteのメニューより以下アイコンをクリックし、アドオンリストを表示します。
正常にスクリプトが作成出来ていればアドオンリストに追加されます。
AddonSampleアドオンをダブルクリックすると以下の画面が表示されます。
ここにはアドオンのヘルプ表示と、パラメータの設定を行うことが可能になります。
アドオンの状態を「OFF」から「ON」に変更し、「決定」ボタンを押下します。
これで現在のプロジェクト内にて当アドオンが有効になります。
適当なマップを作成し、イベント編集モードに切り替えます。
イベント編集モードにて、任意の場所で右クリック>新規作成を選択します。
イベント実行内容を右クリックし、イベントの新規作成を選択しイベントコマンドウィンドウを表示します。
イベントコマンドより、アドオン>アドオンコマンドを選択します。
イベント実行内容にアドオンコマンドが追加されるので、アドオンコマンドを編集していきます。
アドオンコマンドを選択し、アドオン名を「0001:(なし)」から「0002:AddonSample」に変更します。
すると「コマンド名」が選択可能になります。
ここで、先ほどのスクリプトで作成した「セルフスイッチ変更」を選択できるようになります。
アドオンコマンドの下部にてコマンドに対しての引数を指定することができます。
「セルフスイッチ変更」コマンドには変更を行う「セルフスイッチ」とON/OFFの値「設定値」を指定できます。
「設定値」の項目をダブルクリックすることで以下のような画面が表示されます。
「設定値」はbool値なので、ONとOFFを変更できます。
ここではセルフスイッチをONに変更したいので、ON(true)を選択し、「決定」ボタンを押下します。
先ほど作成したイベントを以下画像のように編集します。
赤枠内でセルフスイッチがONかOFFかチェックしています。
黄枠内でアドオンを呼び、セルフスイッチをONに変更しています。
緑枠内で再びセルフスイッチがONかOFFかチェックしています。
イベントを配置した近くに初期配置>プレイヤーを設定し動作確認を行います。
イベントに対してアクションを行うと以下のように会話が遷移します。
セルフスイッチの状態がOFFからONに変われば成功となります。
アドオンの作成手順は以上となります。
作成したアドオンをUnityの機能を使いアドオンをパッケージ化します。
自分用に作成したアドオンであればこの手順は不要ですが、公開する際にはこの手順でパッケージ化します。
Unityのメニューよりウィンドウ>RPG Maker>モード>RPG Maker+Unity Editorを選択します。
しばらくするとUnityEditorが表示されます。
「プロジェクト」タブをクリックし、「プロジェクト」ウィンドウを開きます。
「プロジェクト」ウィンドウにて作成したアドオンが入ったディレクトリへ移動する。
今回の例では、RPGMaker\Codebase\Add-onsディレクトリへ移動します。
「プロジェクト」ウィンドウから作成したアドオンフォルダを選択してエクスポートを行います。
アドオンフォルダを右クリック>パッケージをエクスポート...をクリックします。
Exporting packageウィンドウが表示されます。(下記左図)
「依存を含める」チェックを外し、パッケージ化するフォルダを絞り、「エクスポート...」ボタンを押下します。(下記右図)
任意の場所に保存します。
アドオンのパッケージ化手順は以上となります。
画像ファイルや音楽ファイル,UnityのPrefabオブジェクトもパッケージに含めることが出来ます。
フォルダ内にResourcesフォルダを作成し、Prefabを格納することで、「Resources.Load」APIよりアクセスが可能になります。
詳しい説明は省きますが、Prefabを使用することでゲーム上で自由にオブジェクトの配置やUIの表示など行うことが可能になります。
自由度が各段に上がるため是非試してみてください。
まず、RPG Maker Uniteのエディタから通常のUnityエディタへ移動します。3つ目にある「Unity Editor」が通常のUnityエディタです。
Unityの画面に切り替わりました。
アドオンのファイルをインポートするには、以下のふたつの方法があります。いずれかを行ってください。
ファイルを選択することで以下のようなウィンドウが表示されます
●配置するフォルダやファイルが表示される
ここで「インポート」を行ってください。
メニューのウィンドウ>RPG Maker>モード>RPG Maker Forcused Mode を選択し、Uniteの通常画面に戻ります。
アドオンのアイコンをクリックし、アドオンリストを表示します。
先程導入された3つのアドオンがリストに追加されています。初期値では、全て OFF になっているので、機能を有効にするには ON にしましょう。
以上が、アドオンの主な設定方法です。
アドオンは、従来のツクール(Maker)にあったプラグイン同様、システムのプログラムを解析することで、作成が可能であるため、
Unityに詳しい方なら、新たなアドオンを作ることも可能です。
ただしアドオン作成の際には、プラグインと同様、いくつかのアノテーションの理解が必要になりますが、ここでは、割愛します。
ぜひ、アドオンを利用して、よりUniteを有効活用して下さい。