SendMessageByName


宴のシナリオから、Unity側の指定の名前のオブジェクトにSendMessageする。
SendMessageコマンドよりもさらに簡易的に使用可能。

サンプル

リファレンス

Command 説明 Arg1 Arg2 Arg3 Arg4 Arg5 Arg6
SendMessageByName 指定の名前のGameObjectにSendMessageする GameObject名 呼び出すメソッド名 任意引数 任意引数 任意引数 任意引数

SendMessageByNameを受け取るサンプル

Arg1で指定した名前のオブジェクトをUnity側で作成し、メッセージを受け取るコンポーネントを記述する。

エクセルで記述したArg2~Textなど、各セルの内容は、command.ParseCellOptional<>で取得可能なので、柔軟に引数を持たせることが可能です。

using UnityEngine;
using Utage;
using System.Collections;

/// <summary>
/// ADV用SendMessageByNameコマンドから送られたメッセージを受け取る処理のサンプル
/// </summary>
[AddComponentMenu("Utage/ADV/Examples/SendMessageByName")]
public class SampleSendMessageByName : MonoBehaviour
{
    //Testという処理を呼ぶ。引数にはAdvCommandSendMessageByNameを持つ
    void Test(AdvCommandSendMessageByName command)
    {
        Debug.Log("SendMessageByName");
    }

    //引数を使った例
    void TestArg(AdvCommandSendMessageByName command)
    {
        Debug.Log(command.ParseCellOptional<string>(AdvColumnName.Arg3, "arg3"));
    }

    //引数を使った例
    void TestWait(AdvCommandSendMessageByName command)
    {
        StartCoroutine(CoWait(command));
    }

    //command.IsWaitでコマンド終了待ちも切り替えられる
    IEnumerator CoWait(AdvCommandSendMessageByName command)
    {
        command.IsWait = true;

        float time = command.ParseCellOptional<float>(AdvColumnName.Arg3, 0);
        while (true)
        {
            Debug.Log(time);
            time -= Time.deltaTime;
            if (time <= 0) break;
            yield return 0;
        }
        command.IsWait = false;
    }
}