はじめに

「Arbor 3: FSM & BT Graph Editor」について
- Unityで有限ステートマシンやビヘイビアツリーを使ってゲーム作りたい!
- だけど、ゲームロジックに依存する挙動は自分でコーディングしたい!
- そんな時に使えそうな有限ステートマシンとビヘイビアツリーのグラフ編集ウィンドウと、
作りたい挙動にあわせてスクリプトを書けるシンプルなグラフエディタアセットです。
有限ステートマシン(FSM)とは?
- 有限ステートマシンとは、ある状態での挙動と、その状態から別の状態へ遷移する仕組みです。
- たとえば、スイッチと電灯。
- スイッチと電灯にはONとOFFという状態があり、スイッチをONにすれば電灯もONになります。
- スイッチは押せばONに切り替わり、再度押すとOFFに切り替わる挙動です。
- 電灯はONであれば明かりを灯す挙動になります。

詳しくは「ステートマシン」を参照してください。
ビヘイビアツリー(BT)とは?
- 行動の優先度と行動を行う条件をセットで扱えるようにした挙動の木構造です。
- たとえば、敵AIを考えてみましょう。
- プレイヤーに近づく挙動はプレイヤーとの距離が近ければ行う。
- それ以外の時は決まった経路を巡回する。
- プレイヤーに近づく挙動は決まった経路を移動する挙動に比べて優先度が高いと言えます。

詳しくは「ビヘイビアツリー」を参照してください。
Arborを入手する
Arborを使用するための準備
プロジェクト作成
Arborを使用するプロジェクトがまだない場合は新規に作成する必要があります。

プロジェクトの作成方法についての詳細はUnity ManualのGetting startedを参照してください。
「Add Asset Package」ボタンからArborを選択することで後で行うインポート作業を省略できます。

リストにArborパッケージが見つからない場合は後述の「Arborのインポート」を参照してください。
最後に「Create Project」ボタンを押してプロジェクトを作成します。
Arborのインポート
「プロジェクト作成」にてArborパッケージを入れなかった場合や、すでにあるプロジェクトにArborをインポートする際にこの作業が必要になります。
Arborをインポートするために、まずAssetStoreウィンドウを表示します。
メニューから、「Window > Asset Store」を選択するか、ショートカットのCtrl + 9を押してください。

AssetStoreウィンドウが表示されたらツールバーの「My Downloads」ボタンをクリックしダウンロード一覧に切り替えます。
「購入済み」をクリックし、リストからArborパッケージを見つけてください。

「ダウンロード」ボタンが表示されている場合はクリックしてダウンロードを開始します。
「インポート」ボタンをクリックするとImport Unity Packageウィンドウが表示されます。

ウィンドウ右下のImportボタンをクリックすることでインポート完了です。
使い方
ArborEditorウィンドウ
ステートマシンやビヘイビアツリーのグラフを編集するためのウィンドウがArbor Editorウィンドウです。
ステートマシン
ArborFSMはステートマシンを制御するコンポーネントです。
GameObjectにArborFSMを追加し、ArborEditorウィンドウでStateなどのノードを設定することでゲーム内ロジックを組めるようになります。
ビヘイビアツリー
BehaviourTreeはビヘイビアツリーを制御するコンポーネントです。
GameObjectにBehaviourTreeを追加し、ArborEditorウィンドウでActionNodeなどのノードを設定することでゲーム内ロジックを組めるようになります。
データフロー
Arborにはノード間のデータを受け渡す機能が備わっています。
また、簡単な演算を行うための演算ノードも使用できます。
詳しくは「データフロー」のページを参照してください。
ParameterContainerについて
ParameterContainerはグラフ間でのデータの共有などを行うために使用するコンポーネントです。
詳しくは「ParameterContainer」ページを参照してください。
スクリプティング
C#のスクリプトを作成して自作の挙動や演算処理を用意できます。
詳しくは「スクリプティング」を参照してください。
次のステップへ
- ArborEditorウィンドウ ArborEditorウィンドウについて説明しています。
- ステートマシン ステートマシンについて説明しています。
- ビヘイビアツリー ビヘイビアツリーについて説明しています。
- ParameterContainerParameterContainerについて説明しています。
- データフロー データスロットによるデータの受け渡しについて説明しています。
チュートリアル
Arborの基本的な使い方を実践できるチュートリアルもあります。