yosita/たんすかい 2023/10/12 21:21

【Unity脱出ゲーム】宴のSendMessageByName引数ありの実装例

久しぶりの投稿になります。中々更新できず申し訳ないです。

さて今回は、宴のSendMessageByNameの引数(パラメータ)ありの
実装方法です。
宴公式サイトの参考ページはこちら

現在開発中の脱出ゲーム部分の
カバンをカギで開けるギミックの一部です。


宴Excelの記載内容です。(6行目のSendMessageByNameが解説しているコマンド行です)


SendMessageByNameコマンド行のArg3に指定した[Gimmick001]がUnity側のスクリプトに渡したい値となります。
補足するとカバンを開けた後に獲得するアイテムを表示する為に
カバンギミック(脱出ゲームの仕掛け)IDである[Gimmick001]を渡しています。
正しく渡せると、アイテムを獲得でき今回はキツネのお面をgetできる流れです。

C#スクリプトの関数は以下です。
クラス名は[FiledGimmickController]です。

    /// <summary>
    /// 宴からギミックIDを渡して獲得アイテムを表示
    /// </summary>
    /// <param name="command">宴のArg</param>
    public void DroopItemShow(AdvCommandSendMessageByName command)
    {

        string GimmickID = (command.ParseCellOptional<string>(AdvColumnName.Arg3, "arg3"));
        //ギミックIDを元に獲得アイテム情報をget
        string itemNumber = EscapeParamUtageGet.instance.GimmickTbl_DropItemNumber(GimmickID);

        //アセットのファイル名と表示名をとる
        (string ShowName, string FileName) =
                EscapeParamUtageGet.instance.ShowItemInfo(itemNumber.Substring(4, 3));

        //表示名とアセット名を表示
        FieldItemPopUp.instance.ShowItem(ShowName, FileName);
        //      
        //アイテムbox_に渡す
        ItemBox.instance.SetItemBox(FileName, ShowName, itemNumber);

    }

引数ありの場合は、
public void DroopItemShow(AdvCommandSendMessageByName command)のように
関数にAdvCommandSendMessageByName commandを指定します。
string GimmickID =
(command.ParseCellOptional<string>(AdvColumnName.Arg3, "arg3"));
で GimmickIDに宴で指定したGimmick001を取得しています。

通常の関数のように型+変数の
public void DroopItemShow(string GimmickID)
のような形式だと宴からSendMessageByNameを呼べないので注意。
MissingMethodException: Method 'FiledGimmickController.DroopItemShow' not found.とUnity上でエラーとなります。

SendMessageByNameの引数ありの場合は若干特殊な書き方になるので
注意が必要ですね。私自身も、SendMessageByName引数ありの使う頻度も少ないので関数名の指定ミスなのか若干嵌まりました。

宴のアセットは下記です。

本日は以上となります。少しでも参考になれば幸いです。

1件のチップが贈られています

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索