C#スクリプトとの連携について補足しておきます。
1: PlayMakerからのアプローチ。
PlayMakerのステート内から、C#スクリプト内の変数の値を取得、設定する。
メソッドを実行する。
2: C#スクリプトからのアプローチ。
C#スクリプトから、PlayMaker、FSM内の変数の値を取得する、設定する。
FSMにイベントを発信する。
@ ------------------------------ @
1のPlayMakerからのアプローチについては、
ブログ内ページ コンポーネントの値を操作する[Set Property] に説明した通りです。
インスペクタに表示されたスクリプトを、PlayMakerエディタのアクション欄にドロップする
だけで、CallMethod[メソッド実行] SetProperty[変数設定] GetProperty[変数取得] が
行えます。
PlayMakerからスクリプトを操作するのは、わかり易く簡単です。
--------------------
2の C#スクリプトからのアプローチ
まず、PlayMaker、FSMへのイベント発信について。
シーン内の全てのPlayMaker_FSMに対して全体イベントを発信するには、
C#スクリプト内に
// FSMに送信
PlayMakerFSM.BroadcastEvent ("送信エラーですね");
のように記すことで、イベントを送ることができます。(個別は少し面倒、参照)
そして、FSM内で、このようにグローバルイベントとして受け取ることができます。
そして、スクリプトからFSM内の変数操作
□ C#スクリプトからPlayMakerのグローバル変数を操作は
冒頭で
using HutongGames.PlayMaker;
を記した上で
// PlayMaker のグローバル変数 showtextへ スクリプト内の変数
// Hyouji の内容を代入する。
FsmVariables.GlobalVariables.GetFsmString("showtext").Value = Hyouji;
のように行います。
■ C#スクリプトから個別のFSMの変数を操作する場合は
冒頭で
using HutongGames.PlayMaker;
を記した上で
// PlayMakerFSM 型の変数、Kube_fsm を作成
PlayMakerFSM Kube_fsm;
// Kube_fsm に 「Cube」という名前のオブジェクトのFSMコンポーネントを代入する
Kube_fsm = GameObject.Find ("Cube").GetComponent<PlayMakerFSM> ();
// Kube_fsmに格納したFSM の 整数型変数Cube_Xの値を1にする
Kube_fsm.FsmVariables.GetFsmInt ("Cube_X").Value = 1;
のように行います。
(参考 複数のFSMが付いたオブジェクトの場合
スクリプトからPlaymakerのローカル/グローバル変数にアクセスする方法)
--------------------
このように、C#スクリプトからPlayMakerの個別のFSMにアプローチするのは
少し面倒です。
スクリプト内から変数を渡す、受け取る、必要がある場合は、グローバルイベント
でPlayMakerのFSMに合図を送り、ステートからスクリプト内の変数の内容を
受け取る、FSM内の変数を渡す、等に置き換えたほうが楽だと思います。
0 件のコメント:
コメントを投稿