Unity製ノベルゲーム制作キット。iphone・Android アプリ化対応。

プラグインを作成して公開しよう

ジョーカースクリプトのプラグインを作成して、みんなで共有しませんか。。

プラグインとは

ジョーカースクリプトではプラグインを作成して機能を追加することができます。
このプラグインは誰にでも簡単に作成でき、公開することができます


プラグインの作り方と公開方法

プラグインの作成には2つの方法があります。

ひとつはマクロとしてシナリオファイルを作る方法です。
こちらは、サブルーチンとマクロを使おうを参考に作ります。

ただ、この方法だと従来のタグの組み合わせで作らなければいけないため
できる事が制限されてしまします。

そこで、ジョーカースクリプトではC#という言語を使って
制限なく機能を追加する方法があります。

ここからはプログラミング言語C# についての入門的な知識が必要になります。

作成するプラグイン

今回は練習用に以下の様な動きをするプラグインを作ってみます

;2つのパラメータを受け取って、結合した値をvarで指定した変数へ格納する
[join var="f.test" arg1="これは" arg2="テストです" ]
{f.test}[p]
;これはテストですと表示される


このjoinタグを作ってみましょう。

プラグイン用クラスの作成

オリジナルのタグを作りたい場合、まず、クラスを作成します。
クラスはJOKER_GAME/Plugins/PluginComponent.cs を作成しました

そこに以下のようなクラスを作ります using UnityEngine;
using System.Collections;
using System.Collections.Generic;

namespace Novel{

  public class JoinComponent:AbstractComponent
  {
   public JoinComponent ()
   {
  
    //必須項目
    this.arrayVitalParam = new List {
    "var","arg1","arg2"
    };

    this.originalParam = new Dictionary () {
    {"var",""},
    {"arg1",""},
    {"arg2",""},
   };

  }

   public override void start ()
   {

    string var_name = this.param ["var"];
    string arg1 = this.param ["arg1"];
    string arg2 = this.param ["arg2"];

    string arg_result = arg1 + arg2;

    //変数に結果を格納
    StatusManager.variable.set (var_name, arg_result);

    //次のシナリオに進む処理
    this.gameManager.nextOrder ();

   }

  }

}

それでは、重要な部分を解説していきいましょう

public class JoinComponent:AbstractComponent


プラグインとして使用する場合は必ずAbstractComponentを継承してください

クラス名は使用したいタグ名の頭が大文字+Component というクラス名をつけてください

今回の例ですと、[join]というタグを使用したいので
JoinComponentという名前になったわけですね。

this.arrayVitalParam = new List {
    "var","arg1","arg2"
    };

    this.originalParam = new Dictionary () {
    {"var",""},
    {"arg1",""},
    {"arg2",""},
   };

次にこの部分
arrayVitalParam には必ず入力させたパラメータ名を入れます。
すると、タグを使用した時にパラメータが存在しない場合エラーとして警告を出すことができます

originalParam というDictionary には パラメータ名とデフォルトで設定したい値を設定できます
これは、もしも指定したパラメータが指定されていない場合、標準で適応する値を設定することが可能です

string var_name = this.param ["var"];
string arg1 = this.param ["arg1"];
string arg2 = this.param ["arg2"];

このように記述することで、タグで入力されたパラメータ値を取得することができます

StatusManager.variable.set (var_name, arg_result);

変数にC#のコードから値を格納する場合は、上記のメソッドを使用します

this.gameManager.nextOrder ();

最後に次の命令を移動する処理をいれて完成です

如何だったでしょうか。
意外と簡単ですね。
もちろん他の自作したクラスとも組み合わせることができるので 複雑な拡張も簡単にジョーカースクリプトへ組み込むことができるでしょう。

最後に、コード内で使える他の便利なメソッドも紹介させて頂きます


■変数の取得
StatusManager.variable.get("f.test");

■変数の設定
StatusManager.variable.set("f.test","value");

■タグの実行
this.gameManager.startTag("[test val="2"]");



JOKER/Scripts/Novel/Components 以下にタグ用のプログラムソースがたくさん入っているので
こちらを参考にすることで、より高度なタグを作成することができるかと思います