公式フォーラムからカスタムアクションに関する記述を翻訳する:
https://hutonggames.fogbugz.com/default.asp?W351
このカスタムアクションの簡単な記載サンプルでは、システム日付と時刻を取得し、文字列変数に格納する。
using System; namespace HutongGames.PlayMaker.Actions { [ActionCategory(ActionCategory.Time)] [Tooltip("Gets system date and time info and stores it in a string variable")] public class GetSystemDateTIme : FsmStateAction { [UIHint(UIHint.Variable)] [Tooltip("Store System DateTime as as string.")] public FsmString storeString; [Tooltip("Optional foramt tstring. E.g., MM/dd/yyyy MM:mm")] public FsmString format; public override void Reset() { storeString = null; format = "MM/dd/yyyy MM:mm"; } public override void OnEnter() { storeString.Value = DateTime.Now.ToString(format.Value); Finish(); } } }
このアクションはコードを目で追っても十分理解可能であるが、簡単に概要を紹介する:
属性(Attributes)
カテゴリー表示(ActionCategory), 便利な使い方(Tooltip),ヒント( UIHint)属性に対するアクションを記述することが出来る。
[ActionCategory(ActionCategory.Time)]
PlaymakerのAction Browserから検索するときにTimeのカテゴリーに表示※されるように指定する。新たなカテゴリーを追加する場合にはActionCategoryの列挙型(enum)を使用するか、文字列型を使用してカスタムのカテゴリーを定義することが出来る。
[Tooltip("...")]
Playmakerエディタ上での概要や便利な使い方表示を特定のクラスおよびパブリックのフィールドに設定する。
UIHint(UIHint.Variable)]
ユーザがドロップダウンボックスから値を選択できる機能を設定する。
リセット(Reset)
全てのアクションにおいてパブリック変数は初期値をユーザにとって便利な値に設定すべきである。
Resetはステートにアクションが追加されたときに呼び出しされ、またAction Editor設定メニューからResetを選択した際に表示される
開始(OnEnter)
OnEnterはステートがアクティブになったときに呼び出しされる。アクションが簡単なものである場合は、多くのケースで全ての処理をこのなかだけで行う。
storeString.Value = DateTime.Now.ToString(format.Value);このステートメントがこの簡単なアクションの肝であり、日付、時刻をフォーマットにあわせ文字列型として格納している。
アクションが完了した際にはFinish()を呼び出しする。
すべてのステートにおけるアクションが完了したとき、システムはFINISHEDイベントを送信し次のステートに遷移するような準備が整う。
-------
Playmakerはいざとなれば自分でアクションもカスタマイズ出来るのが魅力。
C#でPlaymakerをさらに便利になるようにしようぜ!
0 件のコメント:
コメントを投稿