2012年9月9日日曜日

Playmaker上級編 カスタムアクションのC#コード記載

今回はPlaymakerの高度な使い方を紹介したい。カスタムアクションを自らC#で記入する方法だ。

公式フォーラムからカスタムアクションに関する記述を翻訳する:

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 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿

ブログ アーカイブ