Param


投稿日:2015年6月6日 | 最終更新日:2024年5月15日

ゲーム内で使用するパラメーターの設定。シナリオ分岐のためのフラグや、好感度などの数字、プレイヤー名などの文字列を設定する。

サンプル

リファレンス

項目名 内容 空欄の扱い
Label パラメーターのラベル 入力必須
Type パラメーターの型。用途によって以下のいずれかを記入する
Int:整数
Float:少数
Bool:bool値(フラグ)
String:文字列
入力必須
Value パラメーターの初期値 入力必須
FileType セーブされるファイルの種類。用途によって以下のいずれかを記入する
Default:通常のセーブデータ
System:システムセーブデータで扱う
Const:初期値固定。Ver3以上必須
空欄の場合、Default

FileType

FileTypeで、パラメーターをセーブの仕方を設定することができます。

FileType 内容
Default 通常のセーブロードで使用。複数を切り替えて使うことができる。通常はこのセーブデータにパラメーターの状態もセーブされる
System ゲームが起動した直後に自動的にロードされ、各ページの状態やギャラリーモードの解放状態など、ゲーム全般で使用するセーブデータ。
パラメーターのFileTypeを"System"とすると、そのパラメーターはシステムセーブデータにセーブされ、ゲーム中であれば共通で使える値となる。
これは「クリア回数」などゲーム全般で使いたいパラメーターを作ることを想定している。
Const 初期値固定タイプ。代入演算やセーブの対象にせず、常にエクセルのシートの値を固定で参照するようにします。
通常シート上の値は「初期値」なので、エクセルの初期値を変えてもセーブデータの値で上書きされてしまっていました。
バランス調整で参照する値などに不便だったため、宴3から追加しました

計算式

宴のシナリオ内では、ParamコマンドやSelectionコマンドで計算式を設定して、パラメーターを計算したり変更したりできます。
計算式ではParamシート内で設定した変数と、bool,int,float,stringの任意の値を使えます。
基本的にはCやC#のような一般的なプログラム記述と同じです。
プログラムに慣れていない人は、詳しくはインターネットなどで検索するとより良いかと思います。
参考:http://ufcpp.net/study/csharp/st_operator.html#logical
宴はすべての演算子を使えるわけではありませんが、基本的なものは抑えています。

使用可能な演算子一覧

種別 演算子
四則演算 + - / * % 
比較演算 == != >= <= > < 
単項演算 ! - 
括弧 ( ) 
論理演算 && || 
代入演算 = += -= *= /= %= 

例)
point_roboko+=1
point_roboko<=1
flag_roboko=true

文字列

式の中で文字列を使いたい場合は、"文字列"のように、ダブルクォーテーションで囲ってください。
例)
str="文字列の代入"
str=="文字列との比較"

論理式

JumpコマンドやIfコマンドでは、フラグのチェックなどの条件判定のために論理式という結果がboolとなる式を記述する必要があります。
(C言語のように(point=0)のような0を返す式がFalseとして扱われることはありません)
例えば「flag1がTRUE」なおかつ「flag2がTRUE」なおかつ「pointが3」という場合には
flag1 && flag2 && point==3と書きます。

論理式の演算子

論理式では以下の演算子を使用できます。
&& は 「かつ」  例) flag1 && flag2 なら flag1 かつ flag2 (フラグが両方ともtrue) 
|| は 「または」 例) flag1 || flag2 なら flag1 または flag2 (フラグがどちかtrue) 
! は「ではない」 例) !flag なら flag1がtrueではない (フラグが立っていない)
== は「等しい」 例) point==3 なら pointが3に等しいか 
!= は「等しくない」 例) point!=3 なら pointが3と等しくないか
> は 「より大きい」
< は 「より小さい」
>= は「以上」
<= は「以下」

式の組み合わせ

式の組み合わせは()で囲えるのである程度複雑な条件の場合は、()で囲むとわかりやすくなります。
(flag1 && flag2) || (point>3)
なら、 「flag1、flag2が両方true」または、「pointが3より大きい」 となります。

組み込み関数

計算式の中で、組み込み関数を使うことができます。

名前 説明 サンプル サンプルの結果
Random(min,max) min以上、max以下の範囲の整数のランダム値 point=Random(1,6) 1以上6以下の整数のランダム値
RandomF(min,max) min以上、max以下の範囲の少数のランダム値 point=RandomF(0,1) 0以上1以下の少数のランダム値
Ceil(float) 小数点以下切り上げた少数 rate=Ceil(10.0/3) 4.0
CeilToInt(float) 小数点以下切り上げた整数 point=Ceil(10.0/3) 4
Floor(float) 小数点以下切り捨てた少数 rate=Floor(10.0/3) 3.0
FloorToInt(float) 小数点以下切り捨てた整数 point=FloorToint(10.0/3) 3

Unityのプログラムから、宴のパラメーターを操作する

また、宴のシナリオ内で使用するパラメーターは

        public AdvEngine engine;
        void SampleParameter()
        {
            //パラメーターの取得
            string str = engine.Param.GetParameterString("String型のパラメーター名");
            bool flag = engine.Param.GetParameterBoolean("Bool型のパラメーター名");
            int point = engine.Param.GetParameterInt("Int型のパラメーター名");
            float f = engine.Param.GetParameterFloat("Float型のパラメーター名");

            //型指定済みの設定方法
            engine.Param.SetParameterString("String型のパラメーター名","設定したい文字列");
            engine.Param.SetParameterBoolean("Bool型のパラメーター名",true);
            engine.Param.SetParameterInt("Int型のパラメーター名",100);
            engine.Param.SetParameterFloat("Float型のパラメーター名",0.1f);
        }

などとして、スクリプト上から操作可能です。
会話シーンなどに宴を使う場合は、通常ゲーム部分で取得したポイントを宴のシナリオに反映させたり、逆に宴の選択肢などで変化したフラグを、通常ゲーム側で読み込むといったことも可能になります。

タイトル画面などUI制御でパラメーターを呼び出す場合の注意

AdvEngineの初期化が終わっていないと、パラメータを呼び出してもエラーになってしまいます。
ほとんどのケースでは最初の1フレームで初期化されるのであまり問題ならないですが、ゲーム起動直後に動く部分で取得を行おうとするとエラーになる可能性があります。
パラメターが初期化されたかのチェックは、engine.Param.IsInitで可能です。
Updateなど、起動直後から呼び出す可能性がある処理で使う場合は、チェックをいれてください。

    void Update()
    {
        if (!engine.Param.IsInit) return;

        bool flag = engine.Param.GetParameterBoolean("Bool型のパラメーター名");
    }

また、テンプレートのUI構成の場合は、「IsWaitBoot」にチェックを入れることで起動画面で宴の起動待ちを行うようになります。
起動時は非アクティブなオブジェクトの場合は、こちらを使うほうが楽かもしれません。