var searchIndex = [
    
    {
        "uri": "/manual/statemachine/howtouse.html",
        "title": "ステートマシンの使い方",
        "tags": [],
        "description": "",
        "summary": "ArborFSMコンポーネントの追加 ステートマシンを使用するにはArborFSMコンポーネントが必要です。 ArborFSMコンポーネントの追",
        "content": " ArborFSMコンポーネントの追加 ステートマシンを使用するにはArborFSMコンポーネントが必要です。\nArborFSMコンポーネントの追加には以下のような方法があります。\nHierarchyウィンドウのCreateボタン  HierarchyウィンドウのCreateボタンをクリックするかウィンドウ内を右クリック Arbor/ArborFSMを選択 ArborFSMが追加されている状態のGameObjectが作成される。  \r ArborEditorウィンドウのツールバー  ArborEditorウィンドウを開き、ツールバーの「作成」ボタンをクリック ArborFSMを選択 ArborFSMが追加されている状態のGameObjectが作成される。  \r ArborEditorウィンドウの未選択メニュー  ArborEditorウィンドウを開き、グラフを未選択の時に表示されるメニューの「ArborFSM作成」ボタンをクリック ArborFSMが追加されている状態のGameObjectが作成される。  \r Inspectorウィンドウの”Add Component”ボタン  HierarchyウィンドウでArborFSMを追加したいGameObjectを選択 Inspectorウィンドウの”Add Component”ボタンをクリック Arbor/ArborFSMを選択。 GameObjectにArborFSMが追加される。  \r Arbor EditorウィンドウでArborFSMグラフを開く ArborFSMを編集するにはArbor EditorウィンドウでArborFSMグラフを開く必要があります。\n HierarchyウィンドウでArborFSMコンポーネントが付いたGameObjectを選択。 InspectorウィンドウのArborFSMコンポーネントエディタの”Open Editor”ボタンをクリック。  \r また、すでにArbor Editorウィンドウが開いている場合はHierarchyウィンドウでArborFSMコンポーネントが付いたGameObjetを選択すると切り替わります。\nステートの作成  ノードを作成したいグラフの位置を右クリック メニューの”ステート作成”を選択 ステートの名前を入力し、Enterキーで決定。  \r 常駐ステートの作成  ノードを作成したいグラフの位置を右クリック メニューの”常駐ステート作成”を選択 ステートの名前を入力し、Enterキーで決定。  \r ステートの削除  削除したいノードを選択 グラフ内の右クリックメニューから”削除”を選択、もしくはDeleteキーを押す  \r 開始ステートに設定  ノードヘッダ部の歯車アイコンをクリックするかヘッダ部を右クリック 「開始ステートに設定」を選択。  \r 挙動追加 ステートを動作させるためには、StateBehaviourを追加する必要があります。\n ノードヘッダ部の歯車アイコンをクリックするかヘッダ部を右クリック “挙動追加”を選択 StateBehaviour選択メニューから追加したいStateBehaviourを選択。  \r 挙動挿入 StateBehaviourを任意の位置に挿入するには、「挙動挿入」ボタンから追加します。\n ステートの挙動間のセパレータの中央付近をマウスオーバーする。 表示された「挙動挿入」ボタンをクリック。 「挙動追加」を選択 StateBehaviour選択メニューから追加したいStateBehaviourを選択。  \r 挙動のドラッグ 移動 StateBehaviourをドラッグ＆ドロップすることで、挙動の順番の入れ替えや他ノードへの移動ができます。\n 挙動のタイトルバーをドラッグ 同じノードの他の位置や他のノードへドロップ  \r コピー Ctrl(Win) / option (Mac)を押しながらドラッグ＆ドロップするとコピーになります。\n 挙動のタイトルバーをドラッグ Ctrl(Win) / option (Mac)を押しながら、同じノードの他の位置や他のノードへドロップ  \r 挙動の削除  StateBehaviourのタイトルバーの歯車アイコンをクリックするかタイトルバー部を右クリック メニューの”削除”を選択  \r ステートの接続 既存ノードへの接続  StateBehaviourのStateLinkフィールドをドラッグ 接続先のステートにドロップ  \r ステートを新規作成して接続  StateBehaviourのStateLinkフィールドをドラッグ ステートを作成したいグラフ内の位置でドロップ メニューの”ステート作成”を選択 ステートの名前を入力し、Enterキーで決定。  \r ステートの接続を切断  接続を切断したい接続ライン上を右クリック メニューの”切断”を選択  \r StateLinkの設定 StateLinkの歯車アイコンをクリックすると設定ウィンドウが表示されます。\n\r    項目 内容     Name StateLinkの名前。 入力するとStateLinkフィールドの表示名が変更される。   Transition Timing 遷移タイミングの設定。   Line Color 接続ラインの色    TransitionTiming    項目 内容     Late Update Overwrite LateUpdate時に遷移するよう予約する。\n同フレーム内で既に遷移予約されている場合は上書きする。   Immediate 遷移呼び出し時に瞬時に遷移する。\n遷移がループしている場合、無限ループする可能性もあるので使用には注意すること。   Late Update Dont Overwrite LateUpdate時に遷移するよう予約する。(デフォルト)\n同フレーム内で既に遷移予約されている場合は上書きしない。    リルートノード ステートの接続ラインを束ねたり方向を変更するにはリルートノードが使用できます。\n接続 リルートノードを作成して接続  StateBehaviourのStateLinkフィールドをドラッグ リルートノードを作成したいグラフ内の位置でドロップ メニューの\u0026rdquo;リルート\u0026rdquo;を選択  \r 挿入  接続ライン上のリルートノードを作成したい位置を右クリック。 メニューの\u0026rdquo;リルート\u0026rdquo;を選択。  \r 方向変更  方向を変更するリルートノードを選択 表示される方向アイコンをドラッグして方向を変更。  \r 接続を保持したまま削除  リルートノードを右クリック 「削除(接続を保持)」を選択。  \r "
    },
    {
        "uri": "/manual/scripting/behaviourtree/actionbehaviour.html",
        "title": "ActionBehaviour",
        "tags": [],
        "description": "",
        "summary": "ActionBehaviourのスクリプトを作成し、行いたい処理を記述することでオリジナルのアクションを追加できます。 ActionBehav",
        "content": " ActionBehaviourのスクリプトを作成し、行いたい処理を記述することでオリジナルのアクションを追加できます。\nActionBehaviourスクリプトファイルの作成  Projectウィンドウから作成したい場所で右クリック。 右クリックメニューから、「Create \u0026gt; Arbor \u0026gt; BehaviourTree \u0026gt; ActionBehaviour C# Script」を選択。\n\r  ファイル名を入力して決定  呼び出される関数 作成したActionBehaviourをBehaviourTreeグラフに追加すると、スクリプトの各関数が呼びだされるようになります。\n OnAwake\n初めてアクションノードがアクティブになった時に呼ばれます。 OnStart\nアクションノードがアクティブになった時に呼ばれます。 OnExecute\nアクションノードが実行される時に呼ばれます。\n実行タイミングについては、BehaviourTreeのUpdateSettingsとExecutionSettingsを参照してください。\nArborリファレンス : BehaviourTree OnAbort\nノードがDecoratorにより中断する時に呼ばれます。 OnEnd\nアクションノードが終了するときに呼ばれます。  注意点  MonoBehaviourのenabledは実行制御のために内部で使用しているため、代替となるbehaviourEnabledを使用してください。  呼び出し順 \r  OnEnableとOnDisable以外のMonoBehaviourのコールバックメソッドも使用できますが、Start()はOnExecute()の後に呼ばれてしまうため注意してください。  変数の宣言 \r 作成したスクリプトにpublicもしくはSerializedField属性をつけたフィールドを宣言することでArbor Editorで編集可能になります。\n1 2 3 4 5 6 7 8 9 10 11  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor; using Arbor.BehaviourTree;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestActionBehaviour : ActionBehaviour { public string myName; // 略 }   \n実行の終了 OnExecuteメソッド内でFinishExecute(bool result)を呼び出すことで終了させられます。\n1 2 3 4  if (Input.GetKey(KeyCode.Space) ) { FinishExecute(true); }   \nデータフロー ActionBehaviourではデータフローによる値の入出力が可能です。\n詳しくは、「スクリプティング : データフロー」を参照してください。\nスクリプティング : データフロー\n"
    },
    {
        "uri": "/manual/behaviourtree/howtouse.html",
        "title": "ビヘイビアツリーの使い方",
        "tags": [],
        "description": "",
        "summary": "BehaviourTreeコンポーネントの追加 ビヘイビアツリーを使用するにはBehaviourTreeコンポーネントが必要です。 Behavi",
        "content": " BehaviourTreeコンポーネントの追加 ビヘイビアツリーを使用するにはBehaviourTreeコンポーネントが必要です。\nBehaviourTreeコンポーネントの追加には以下2つの方法があります。\nBehaviourTreeコンポーネントが付いたGameObjectの作成  HierarchyウィンドウのCreateボタンをクリックするかウィンドウ内を右クリック Arbor/BehaviourTreeを選択  \r 既にあるGameObjectにBehaviourTreeコンポーネントを追加  HierarchyウィンドウでBehaviourTreeを付けたいGameObjectを選択 Inspectorウィンドウの\u0026rdquo;Add Component\u0026rdquo;ボタンをクリック Arbor/BehaviourTreeを選択。  \r Arbor EditorウィンドウでBehaviourTreeグラフを開く BehaviourTreeを編集するにはArbor EditorウィンドウでBehaviourTreeグラフを開く必要があります。\n HierarchyウィンドウでBehaviourTreeコンポーネントが付いたGameObjectを選択。 InspectorウィンドウのBehaviourTreeコンポーネントエディタの\u0026rdquo;Open Editor\u0026rdquo;ボタンをクリック。  \r また、すでにArbor Editorウィンドウが開いている場合はHierarchyウィンドウでBehaviourTreeコンポーネントが付いたGameObjetを選択すると切り替わります。\nコンポジットノードの作成  ノードを作成したいグラフの位置を右クリック メニューの\u0026rdquo;コンポジット作成\u0026rdquo;を選択 コンポジット選択ウィンドウで作成したいコンポジットを選択。  \r アクションノードの作成  ノードを作成したいグラフの位置を右クリック メニューの\u0026rdquo;アクション作成\u0026rdquo;を選択 アクション選択ウィンドウで作成したいアクションを選択。  \r アクションスクリプトの作成についてはこちら\nスクリプティング : ActionBehaviour\nノードの接続 ルートノードやコンポジットノード、アクションノードは親子関係を接続できます。\n既存ノードへの接続  ノードの上部または下部にある接続スロットをドラッグ 接続先のスロットへドロップ  \r ノードの新規作成して接続  ノードの上部または下部にある接続スロットをドラッグ ノードを作成したいグラフ内の位置でドロップ メニューの\u0026rdquo;コンポジット作成\u0026rdquo;か\u0026rdquo;アクション作成\u0026rdquo;を選択 各種スクリプト選択メニューで作成したいスクリプトを選択  \r ノードの接続を切断  接続を切断したい接続ライン上か接続スロットを右クリック メニューの\u0026rdquo;切断\u0026rdquo;を選択  \r ノードの優先順位変更 同じ親を持つ兄弟同士のノードはノードの位置関係によって優先順位が決まります。\n 優先順位を下げたい場合は、ノードをドラッグして 右に移動 。 優先順位を上げたい場合は、ノードをドラッグして 左に移動 。  \r ノードの削除  削除したいノードを選択 グラフ内の右クリックメニューから\u0026rdquo;削除\u0026rdquo;を選択、もしくはDeleteキーを押す  \r コンポジット置き換え ノードの位置や接続状態などはそのままに、後からコンポジットだけ置き換えられます。\n ノードヘッダ部の歯車アイコンをクリックするかヘッダ部を右クリック 「コンポジット置き換え」を選択 コンポジット選択メニューからコンポジットを選択。  \r アクション置き換え ノードの位置や接続状態などはそのままに、後からアクションだけ置き換えられます。\n ノードヘッダ部の歯車アイコンをクリックするかヘッダ部を右クリック 「アクション置き換え」を選択 アクション選択メニューからアクションを選択。  \r デコレータ追加 コンポジットノードかアクションノードにはデコレータが追加できます。\n ノードヘッダ部の歯車アイコンをクリックするかヘッダ部を右クリック 「デコレータ追加」を選択 デコレータ選択メニューから追加したいデコレータを選択。  \r デコレータスクリプトの作成についてはこちら\nスクリプティング : Decorator\nデコレータ挿入 任意の位置にデコレータを挿入できます。\n ノードヘッダ部とメイン挙動の間、中央付近をマウスオーバー。\nまたは、挿入したい位置のデコレータ間のセパレータの中央付近をマウス―オーバー。 「デコレータ挿入」ボタンをクリック 「デコレータ追加」を選択 デコレータ選択メニューから追加したいデコレータを選択。  \r デコレータ削除  デコレータのタイトルバーの歯車アイコンをクリックするかタイトルバー部を右クリック メニューの\u0026rdquo;削除\u0026rdquo;を選択  \r サービス追加 コンポジットノードかアクションノードにはサービスが追加できます。\n ノードヘッダ部の歯車アイコンをクリックするかヘッダ部を右クリック 「サービス追加」を選択 サービス選択メニューから追加したいサービスを選択。  \r なお、サービスには組み込みスクリプトがないため予めサービススクリプトを作成しておく必要があります。\nサービススクリプトの作成についてはこちら\nスクリプティング : Service\nサービス挿入 任意の位置にサービスを挿入できます。\n メイン挙動とノード下部の間の中央付近をマウスオーバー。\nまたは、挿入したい位置のサービス間のセパレータの中央付近をマウス―オーバー。 「サービス挿入」ボタンをクリック 「サービス追加」を選択 サービス選択メニューから追加したいサービスを選択。  \r サービス削除  サービスのタイトルバーの歯車アイコンをクリックするかタイトルバー部を右クリック メニューの\u0026rdquo;削除\u0026rdquo;を選択  \r "
    },
    {
        "uri": "/manual/scripting/statebehaviour.html",
        "title": "StateBehaviour",
        "tags": [],
        "description": "",
        "summary": "StateBehaviourをカスタマイズするには、StateBehaviour用のスクリプトファイルを作成し、行いたい処理を記述する必要が",
        "content": " StateBehaviourをカスタマイズするには、StateBehaviour用のスクリプトファイルを作成し、行いたい処理を記述する必要があります。\nStateBehaviourスクリプトファイルの作成  Projectウィンドウから作成したい場所で右クリック。 右クリックメニューから、「Create \u0026gt; Arbor \u0026gt; StateBehaviour C# Script」を選択。\n\r  ファイル名を入力して決定  呼び出される関数 作成したStateBehaviourをArborEditorにてステートに割り当てると、スクリプトの各関数が呼び出されるようになります。\n OnStateAwake\n初めてステートに遷移してきたときに呼ばれます。 OnStateBegin\nステートに遷移してきたときに呼ばれます。 OnStateUpdate\nArborFSMのUpdate()のタイミングで呼ばれます。\n毎フレーム呼ばれるかどうかはArborFSMのUpdate Settingsに依存。 OnStateLateUpdate\nArborFSMのLateUpdate()のタイミングで呼ばれます。\n毎フレーム呼ばれるかどうかはArborFSMのUpdate Settingsに依存。 OnStateEnd\nステートから離れるときに呼ばれます。 MonoBehaviourのメッセージ関数\n詳しくはUnity ScriptReferenceのMonoBehaviourのMessagesを参照してください。  注意点  MonoBehaviourのenabledは実行制御のために内部で使用しているため、代替となるbehaviourEnabledを使用してください。  呼び出し順 \r  OnStateAwake/OnStateBegin/OnStateUpdate/OnStateLateUpdate/OnStateEndはArbor Editorでのステートノードに追加されている上から順に呼ばれます。 MonoBehaviour関連はUnityによる実行順にしたがって呼び出されます。\n詳しくはUnity Manualの イベント関数の実行順 を参照してください。  変数とArbor Editor \r 作成したスクリプトにpublicもしくはSerializeField属性をつけた変数を宣言することでArbor Editorで編集可能になります。\n1 2 3 4 5 6 7 8  using UnityEngine; using System.Collections; using Arbor; public class TestBehaviour : StateBehaviour { public string myName; // 略 }    ステートの接続 \r フィールドの追加 作成したスクリプトにpublicもしくはSerializeField属性をつけたStateLinkを宣言することでArbor Editorで接続スロットが表示されるようになります。\n1 2 3 4 5 6 7 8  using UnityEngine; using System.Collections; using Arbor; public class TestBehaviour : StateBehaviour { public StateLink nextState; // 略 }    接続先への遷移 遷移したいタイミングでTransitionを呼ぶと遷移できます。 1 2  Transition( nextState );   \nデータフロー StateBehaviourではデータフローによる値の入出力が可能です。\n詳しくは、「スクリプティング : データフロー」を参照してください。\nスクリプティング : データフロー\n"
    },
    {
        "uri": "/manual/getting-started.html",
        "title": "はじめに",
        "tags": [],
        "description": "",
        "summary": "「Arbor 3: FSM \u0026amp; BT Graph Editor」について Unityで有限ステートマシンやビヘイビアツリーを使ってゲーム作りたい！ だけど、ゲームロジックに",
        "content": " \r 「Arbor 3: FSM \u0026amp; BT Graph Editor」について  Unityで有限ステートマシンやビヘイビアツリーを使ってゲーム作りたい！ だけど、ゲームロジックに依存する挙動は自分でコーディングしたい！ そんな時に使えそうな有限ステートマシンとビヘイビアツリーのグラフ編集ウィンドウと、\n作りたい挙動にあわせてスクリプトを書けるシンプルなグラフエディタアセットです。  有限ステートマシン(FSM)とは？  有限ステートマシンとは、ある状態での挙動と、その状態から別の状態へ遷移する仕組みです。 たとえば、スイッチと電灯。  スイッチと電灯にはONとOFFという状態があり、スイッチをONにすれば電灯もONになります。 スイッチは押せばONに切り替わり、再度押すとOFFに切り替わる挙動です。 電灯はONであれば明かりを灯す挙動になります。   \r 詳しくは「ステートマシン」を参照してください。\nビヘイビアツリー(BT)とは？  行動の優先度と行動を行う条件をセットで扱えるようにした挙動の木構造です。 たとえば、敵AIを考えてみましょう。  プレイヤーに近づく挙動はプレイヤーとの距離が近ければ行う。 それ以外の時は決まった経路を巡回する。 プレイヤーに近づく挙動は決まった経路を移動する挙動に比べて優先度が高いと言えます。   \r 詳しくは「ビヘイビアツリー」を参照してください。\nArborを入手する  Arborを使用するための準備 プロジェクト作成 Arborを使用するプロジェクトがまだない場合は新規に作成する必要があります。\n\r プロジェクトの作成方法についての詳細はUnity ManualのGetting startedを参照してください。\n「Add Asset Package」ボタンからArborを選択することで後で行うインポート作業を省略できます。\n\r リストにArborパッケージが見つからない場合は後述の「Arborのインポート」を参照してください。\n最後に「Create Project」ボタンを押してプロジェクトを作成します。\nArborのインポート 「プロジェクト作成」にてArborパッケージを入れなかった場合や、すでにあるプロジェクトにArborをインポートする際にこの作業が必要になります。\nArborをインポートするために、まずAssetStoreウィンドウを表示します。\nメニューから、「Window \u0026gt; Asset Store」を選択するか、ショートカットのCtrl + 9を押してください。\n\r AssetStoreウィンドウが表示されたらツールバーの「My Downloads」ボタンをクリックしダウンロード一覧に切り替えます。\n「購入済み」をクリックし、リストからArborパッケージを見つけてください。\n\r 「ダウンロード」ボタンが表示されている場合はクリックしてダウンロードを開始します。\n「インポート」ボタンをクリックするとImport Unity Packageウィンドウが表示されます。\n\r ウィンドウ右下のImportボタンをクリックすることでインポート完了です。\n使い方 ArborEditorウィンドウ ステートマシンやビヘイビアツリーのグラフを編集するためのウィンドウがArbor Editorウィンドウです。\n ArborEditorウィンドウ  ステートマシン ArborFSMはステートマシンを制御するコンポーネントです。\nGameObjectにArborFSMを追加し、ArborEditorウィンドウでStateなどのノードを設定することでゲーム内ロジックを組めるようになります。\n ステートマシンの使い方  ビヘイビアツリー BehaviourTreeはビヘイビアツリーを制御するコンポーネントです。\nGameObjectにBehaviourTreeを追加し、ArborEditorウィンドウでActionNodeなどのノードを設定することでゲーム内ロジックを組めるようになります。\n ビヘイビアツリーの使い方  データフロー Arborにはノード間のデータを受け渡す機能が備わっています。\nまた、簡単な演算を行うための演算ノードも使用できます。\n詳しくは「データフロー」のページを参照してください。\nデータフロー\nParameterContainerについて ParameterContainerはグラフ間でのデータの共有などを行うために使用するコンポーネントです。\n詳しくは「ParameterContainer」ページを参照してください。\nParameterContainer\nスクリプティング C#のスクリプトを作成して自作の挙動や演算処理を用意できます。\n詳しくは「スクリプティング」を参照してください。\nスクリプティング\n次のステップへ  ArborEditorウィンドウ ArborEditorウィンドウについて説明しています。 ステートマシン ステートマシンについて説明しています。 ビヘイビアツリー ビヘイビアツリーについて説明しています。 ParameterContainerParameterContainerについて説明しています。 データフロー データスロットによるデータの受け渡しについて説明しています。  チュートリアル Arborの基本的な使い方を実践できるチュートリアルもあります。\nチュートリアル\n"
    },
    {
        "uri": "/manual/statemachine/menu.html",
        "title": "各メニューについて",
        "tags": [],
        "description": "",
        "summary": "グラフのメニュー グラフを右クリックするとメニューが表示されます。 項目 内容 ステート作成 通常ステートを作成します。 常駐ステート作成 常駐ステートを",
        "content": " グラフのメニュー グラフを右クリックするとメニューが表示されます。\n\r    項目 内容     ステート作成 通常ステートを作成します。   常駐ステート作成 常駐ステートを作成します。   演算ノード作成 演算ノードを作成します。   グループ作成 グループを作成します。   コメント作成 コメントを作成します。   切り取り 選択中のノードを切り取ります。   コピー 選択中のノードをコピーします。   貼り付け コピーしたノードを貼り付けます。   複製 選択中のノードを複製します。   削除 選択中のノードを削除します。   全て展開 選択中ノードの挙動を全て展開します。   全て折りたたみ 選択中ノードの挙動を全て折りたたみます。    ステートのメニュー ステートのヘッダ部を右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     リネーム ステートの名前を変更します。   コメント表示 ノードコメント欄の表示を切り替えます。   開始ステートに設定 開始ステートに設定します。   ブレークポイント ブレークポイントの設定を切り替えます。   挙動追加 StateBehaviourを追加します。   挙動を貼り付け コピーしたStateBehaviourを貼り付けます。   全て展開 ノードに追加されている全ての挙動を展開します。   全て折りたたみ ノードに追加されている全ての挙動を折りたたみます。   切り取り ノードを切り取ります。   コピー ノードをコピーします。   複製 ノードを複製します。   削除 ノードを削除します。   遷移（プレイ中のみ有効） プレイ中に選択することで、強制的に遷移します。    StateBehaviourのメニュー StateBehaviourのタイトルバーを右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     上に移動 挙動の順番を上に移動します。   下に移動 挙動の順番を下に移動します。   コピー StateBehaviourをコピーします。   貼り付け コピーしたStateBehaviourを上書きします（同じ型のみ有効）   削除 StateBehaviourを削除します。   スクリプト編集 スクリプトエディタを開きます。   Editorスクリプト編集 Editorスクリプトを開きます(Editorスクリプトがある時のみ)    接続ラインの右クリックメニュー 接続ライン上を右クリックすると、メニューが表示されます。\n\r    項目 内容     遷移元へ移動 遷移元のステートへスクロールします。   遷移先へ移動 遷移先のステートへスクロールします。   前のノードへ移動 前のノードへスクロールします（リルートノードがある場合のみ表示）   次のノードへ移動 次のノードへスクロールします（リルートノードがある場合のみ表示）   リルート クリックした位置にリルートノードを作成します。   切断 切断します。   設定 StateLinkの設定ウィンドウを開きます。    デバッグメニュー ツールバーの「デバッグ」ボタンをクリックすると表示されます。\n\r    項目 内容     常にすべてのデータ値を表示 個々のデータラインの表示設定によらず常にデータ値を表示する   すべてのデータ値を表示 全てのデータラインの現在値を表示に変更します。   すべてのデータ値を非表示 全てのデータラインの現在値を非表示に変更します。   ブレークポイント設定 選択中ステートのブレークポイントを設定します。   ブレークポイント解除 選択中ステートのブレークポイントを解除します。   すべてのブレークポイントを解除 全てのステートのブレークポイントを解除します。   カウントクリア（プレイ中のみ有効） ステートの遷移回数を０に変更します。    リルートノードのメニュー \r    項目 内容     設定 StateLinkの設定ウィンドウを開きます。   切り取り ノードを切り取ります。   コピー ノードをコピーします。   複製 ノードを複製します。   削除 ノードを削除します。   削除（接続を保持） 接続を保持したままリルートノードのみ削除します。    "
    },
    {
        "uri": "/manual/arboreditor.html",
        "title": "ArborEditorウィンドウ",
        "tags": [],
        "description": "",
        "summary": "各種グラフを編集するためのウィンドウです。 ArborEditorウィンドウを開く Windowを直接開く メニューの「Window \u0026gt; Arbor Edito",
        "content": " \r 各種グラフを編集するためのウィンドウです。\nArborEditorウィンドウを開く Windowを直接開く  メニューの「Window \u0026gt; Arbor Editor」を選択\n\r   グラフから開く  グラフを持ったGameObjectを選択。 Inspectorウィンドウの「Open Editor」ボタンをクリック。\n\r   UI説明 \r １．ツールバー 「 作成」ドロップダウン \r シーンに、選択したグラフを持つGameObjectを作成します。\n   メニュー 内容     ArborFSM ArborFSMを持つGameObjectをシーンに作成   BehaviourTree BehaviourTreeを持つGameObjectをシーンに作成    グラフ選択フィールド \r グラフを選択するフィールドです。\nサイドパネルのトグルボタン \r サイドパネルの表示を切り替えます。\n「ライブ追跡」トグル \r プレイ中にアクティブノードを追跡するか切り替えます。\n「表示」ドロップダウン \r 表示関連メニューを表示します。\n   メニュー 内容     全て展開 折りたたまれている挙動を全て展開する   全て折りたたみ 展開されている挙動をすべて折りたたむ    「デバッグ」ドロップダウン \r 各グラフのデバッグ関連メニューを表示します。\n   メニュー 内容     常にすべてのデータ値を表示 個々のデータラインの表示設定によらず常にデータ値を表示する   すべてのデータ値を表示 プレイ中に全てのデータラインの出力値を表示に変更する   すべてのデータ値を非表示 全てのデータラインの出力値を非表示に変更する    グラフ別のメニュー項目は各グラフのマニュアルを参照してください。\n ステートマシンの使い方 ビヘイビアツリーの使い方  キャプチャボタン \r グラフビュー全体を画像に保存します。\n（最大サイズは16384 x 16384です）\n通知ボタン \r 新しいバージョンがリリースされた場合などに表示されます。\nヘルプボタン \r マニュアルなどを開くメニューが表示されます。\n設定ボタン \r 各種設定を行うウィンドウを表示します。\n   項目 内容     言語 表示する言語の選択   ロゴ表示 グラフビューにArborロゴ表示の切り替え   ズーム ズームアウトする量の設定   マウスホイールの挙動 マウスホイールの挙動がズームかスクロールの選択   ドッキングして開く ArborEditorウィンドウを開くときのドッキングの切り替え   階層のライブ追跡 ライブ追跡時、グラフ階層も追跡するかの切り替え   グリッド表示 グラフビューのグリッド表示の切り替え   グリッドにスナップ グラフビューでドラッグした際にスナップするかの切り替え   グリッドサイズ グラフビューで表示するグリッド幅の設定   グリッド分割数 グリッドサイズを何分割するかの設定   初期化 グリッド設定をデフォルトに戻す   バージョン インポートしているArborのバージョン    ２．サイドパネル グラフ \r グラフ名の設定や親グラフや子グラフの切り替えボタンが表示されます。\n Name グラフ名の編集フィールド Parent Graph 親グラフをグラフビューに表示するボタン Children 子グラフをグラフビューに表示するボタン\n(SubStateMachineやSubBehaviourMachineがある場合に表示)  ノードリスト \r グラフに配置しているノードのリストが表示されます。 (表示されるノードは各グラフの状態にかかわるノードのみ)\n操作方法    操作 Windows Mac     選択 マウス左ボタン マウス左ボタン   追加選択 選択解除 Ctrl + マウス左ボタン   連続したノード選択 Shift + マウス左ボタン shift ⇧ + マウス左ボタン    ３．グラフビュー \r ノードグラフを表示します。\n４．グラフパス \r 現在グラフビューに表示されているグラフまでのパスを表示します。\nグラフ共通の使い方 詳しい使用方法はこちらを参照してください。\nグラフ共通の使い方\n"
    },
    {
        "uri": "/manual/scripting/behaviourtree/decorator.html",
        "title": "Decorator",
        "tags": [],
        "description": "",
        "summary": "Decoratorのスクリプトを作成し、行いたい処理を記述することでオリジナルの条件判定やループ処理を追加できます。 Decoratorスクリ",
        "content": " Decoratorのスクリプトを作成し、行いたい処理を記述することでオリジナルの条件判定やループ処理を追加できます。\nDecoratorスクリプトファイルの作成  Projectウィンドウから作成したい場所で右クリック。 右クリックメニューから、「Create \u0026gt; Arbor \u0026gt; BehaviourTree \u0026gt; Decorator C# Script」を選択。\n\r  ファイル名を入力して決定  呼び出される関数 作成したDecotarotをコンポジットノードやアクションノードに追加すると、スクリプトの各関数が呼びだされるようになります。\n OnAwake\n初めてノードがアクティブになった時に呼ばれます。 OnStart\nノードがアクティブになった時に呼ばれます。 OnAbort\nノードがDecoratorにより中断する時に呼ばれます。 OnEnd\nノードが終了するときに呼ばれます。 HasConditionCheck\nConditionCheckを行うかどうかを判定するために呼ばれます。\nConditionCheckを行わない場合はoverrideしてfalseを返すようにしてください。\nデフォルトtrue。 OnConditionCheck\n条件判定を行う時に呼ばれます。\n条件に合致する場合はtrueを、合致しなければfalseを返してください。\n中断するかどうかは最終的にはAbortFlagsにより決定されます。 OnRepeatCheck\nノードが正常終了した場合に繰り返すかどうかを判定する際に呼ばれます。\n繰り返す場合はtrueを返してください。\nデフォルトfalse OnFinishExecute\n実行結果を変更するために呼ばれます。\nデフォルトでは受け取った結果をそのまま返します。  注意点  MonoBehaviourのenabledは実行制御のために内部で使用しているため、代替となるbehaviourEnabledを使用してください。  呼び出し順 \r  ノードに複数のDecoratorを追加している場合は上から順に呼ばれます。 OnEnableとOnDisable以外のMonoBehaviourのコールバックメソッドも使用できますが、Start()はOnConditionCheck()などの後に呼ばれてしまうため注意してください。  変数の宣言 \r 作成したスクリプトにpublicもしくはSerializedField属性をつけたフィールドを宣言することでArbor Editorで編集可能になります。\n1 2 3 4 5 6 7 8 9 10 11  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor; using Arbor.BehaviourTree;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestDecorator : Decorator { public string myName; // 略 }   \nデータフロー Decoratorではデータフローによる値の入出力が可能です。\n詳しくは、「スクリプティング : データフロー」を参照してください。\nスクリプティング : データフロー\n"
    },
    {
        "uri": "/manual/scripting/behaviourtree.html",
        "title": "BehaviourTree",
        "tags": [],
        "description": "",
        "summary": "BehaviourTreeでもスクリプトを記述することでカスタマイズできます。 ActionBehaviour アクションノードに割り当てるスクリプトについて説明します。 Decorator",
        "content": "BehaviourTreeでもスクリプトを記述することでカスタマイズできます。\n ActionBehaviour\nアクションノードに割り当てるスクリプトについて説明します。 Decorator\nデコレータスクリプトについて説明します。 Service\nサービススクリプトについて説明します。  "
    },
    {
        "uri": "/manual/behaviourtree/menu.html",
        "title": "各メニューについて",
        "tags": [],
        "description": "",
        "summary": "グラフのメニュー グラフを右クリックするとメニューが表示されます。 項目 内容 コンポジット作成 コンポジットノードを作成します。 アクション作成 アクシ",
        "content": " グラフのメニュー グラフを右クリックするとメニューが表示されます。\n\r    項目 内容     コンポジット作成 コンポジットノードを作成します。   アクション作成 アクションノードを作成します。   演算ノード作成 演算ノードを作成します。   グループ作成 グループを作成します。   コメント作成 コメントを作成します。   切り取り 選択中のノードを切り取ります。   コピー 選択中のノードをコピーします。   貼り付け コピーしたノードを貼り付けます。   複製 選択中のノードを複製します。   削除 選択中のノードを削除します。   全て展開 選択中ノードの挙動を全て展開します。   全て折りたたみ 選択中ノードの挙動を全て折りたたみます。    コンポジットノードのメニュー ノードのヘッダ部を右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     リネーム ノードの名前を変更します。   コメント表示 ノードコメント欄の表示を切り替えます。   コンポジット置き換え 他のコンポジットスクリプトに置き換えます。   デコレータ追加 デコレータを追加します。   サービス追加 サービスを追加します。   デコレータを新規貼り付け コピーしたデコレータを貼り付けます。   サービスを新規貼り付け コピーしたサービスを貼り付けます。   全て展開 ノードの挙動をすべて展開します。   全て折りたたみ ノードの挙動をすべて折りたたみます。   切り取り ノードを切り取ります。   コピー ノードをコピーします。   複製 ノードを複製します。   削除 ノードを削除します。    コンポジットのメニュー タイトルバーを右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     コピー コンポジットをコピーします。   値を貼り付け コピーしたコンポジットの値で上書きします。（同じ型のみ有効）   スクリプト編集 スクリプトエディタを開きます。   Editorスクリプト編集 Editorスクリプトを開きます(Editorスクリプトがある時のみ)    アクションノードのメニュー ノードのヘッダ部を右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     リネーム ノードの名前を変更します。   コメント表示 ノードコメント欄の表示を切り替えます。   アクション置き換え 他のアクションスクリプトに置き換えます。   デコレータ追加 デコレータを追加します。   サービス追加 サービスを追加します。   デコレータを新規貼り付け コピーしたデコレータを貼り付けます。   サービスを新規貼り付け コピーしたサービスを貼り付けます。   全て展開 ノードの挙動をすべて展開します。   全て折りたたみ ノードの挙動をすべて折りたたみます。   切り取り ノードを切り取ります。   コピー ノードをコピーします。   複製 ノードを複製します。   削除 ノードを削除します。    アクションのメニュー タイトルバーを右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     コピー コンポジットをコピーします。   値を貼り付け コピーしたコンポジットの値で上書きします。（同じ型のみ有効）   スクリプト編集 スクリプトエディタを開きます。   Editorスクリプト編集 Editorスクリプトを開きます(Editorスクリプトがある時のみ)    デコレータのメニュー タイトルバーを右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     上に移動 順番を上に移動します。   下に移動 順番を下に移動します。   コピー デコレータをコピーします。   値を貼り付け コピーしたデコレータの値で上書きします（同じ型のみ有効）   削除 デコレータを削除します。   スクリプト編集 スクリプトエディタを開きます。   Editorスクリプト編集 Editorスクリプトを開きます(Editorスクリプトがある時のみ)    サービスのメニュー タイトルバーを右クリックするか歯車アイコンをクリックするとメニューが表示されます。\n\r    項目 内容     上に移動 順番を上に移動します。   下に移動 順番を下に移動します。   コピー サービスをコピーします。   値を貼り付け コピーしたサービスの値で上書きします（同じ型のみ有効）   削除 サービスを削除します。   スクリプト編集 スクリプトエディタを開きます。   Editorスクリプト編集 Editorスクリプトを開きます(Editorスクリプトがある時のみ)    接続ラインのメニュー 接続ライン上を右クリックすると、メニューが表示されます。\n\r    項目 内容     親ノードへ移動 親ノードの位置へスクロールします。   子ノードへ移動 子ノードの位置へスクロールします。   切断 切断します。    デバッグメニュー ツールバーの「デバッグ」ボタンをクリックすると表示されます。\n\r    項目 内容     常にすべてのデータ値を表示 個々のデータラインの表示設定によらず常にデータ値を表示する   すべてのデータ値を表示 全てのデータラインの現在値を表示に変更します。   すべてのデータ値を非表示 全てのデータラインの現在値を非表示に変更します。    "
    },
    {
        "uri": "/manual/statemachine.html",
        "title": "ステートマシン",
        "tags": [],
        "description": "",
        "summary": "ステートマシンとは？ ステートマシンは、挙動を１つの状態として、条件によって状態を切り替えていく仕組みを言います。 Arborでは、ArborF",
        "content": " ステートマシンとは？ ステートマシンは、挙動を１つの状態として、条件によって状態を切り替えていく仕組みを言います。\nArborでは、ArborFSMコンポーネントをGameObjectに追加することでステートマシンが使えるようになります。\n例：スイッチとライト スイッチと電灯を考えてみます。\n スイッチOFFならライトは消える。 スイッチONならライトが点く。 スイッチを条件として、ライトの状態が切り替わります。  ArborFSMで仮組すると以下のようになります。\n\r Destroyメッセージが送られてきた場合に爆発エフェクトを出し削除する挙動も仮組されています。\n詳しい解説は後程行います。\nノードの構成要素 開始ステート \r ArborFSMが開始した際に一番初めに実行されるステートです。\n１つのグラフに必ず１つ必要です。\nステート \r 通常のステートです。\n開始ステートや他のステートから遷移することで実行されます。\n常駐ステート \r 実行中ノードがどれかにかかわらず常に実行されるステートです。\n何らかの割り込み判定などをここで行います。\nまた、常に実行されているため、常駐ステートから他のステートへの遷移は可能ですが、他のステートから常駐ステートへは遷移できません。\nリルートノード \r 接続ラインの経路を調整するためのノードです。\n接続ラインが交差して見にくい場合に使用します。\nラインの方向もこのノードで調整できます。\nStateBehaviourスクリプト \r ステートの挙動を処理するためのスクリプトです。\n開始ステートや通常ステート、常駐ステートのすべてに設定できます。\n１つのステートに複数のStateBehaviourを追加できるため、挙動を組み合わせて状態を作成できます。\nStateBehaviourスクリプトの作成についてはこちら。\nスクリプティング : StateBehaviour\n組み込みStateBehaviour 例に出ているActivateGameObjectやOnTriggerEnterTransitionなど、あらかじめ組み込まれている挙動もStateBehaviourスクリプトで記述されています。\n組み込みStateBehaviourのリファレンスはこちらを参照してください。\nArborリファレンス : StateBehaviours\nStateLinkについて \r 状態遷移を行うにはStateLinkを使用します。\nStateBehaviourにStateLinkフィールドを宣言すると、Arbor Editorにフィールドが表示されます。\n接続することで、実行時にStateBehaviourスクリプトの記述に従って状態遷移が行われます。\n操作方法    操作 方法     接続 ドラッグ＆ドロップ\n\r    切断 接続ラインを右クリックし「切断」を選択。\n\r     TransitionTiming 遷移するタイミングは即座に行われるのではなく、TransitionTimingの指定に従います。\nTransitionTimingはStateLinkの歯車アイコンをクリックすると開く設定ウィンドウによって行えます。\n\r TransitionTimingの動作は以下のようになります。\n   項目 内容     Late Update Overwrite LateUpdate時に遷移するよう予約する。\n同フレーム内で既に遷移予約されている場合は上書きする。   Immediate 遷移呼び出し時に瞬時に遷移する。\n遷移がループしている場合、無限ループする可能性もあるので使用には注意すること。   Late Update Dont Overwrite LateUpdate時に遷移するよう予約する。(デフォルト)\n同フレーム内で既に遷移予約されている場合は上書きしない。    例の解説 では、先ほどの例をもう一度見てみましょう。\n\r  Light Offステート\n\r  まず、開始ステートのLight Offステートから始まる。 ActivateGameObectにより、Spotlightオブジェクトが非アクティブに変更される。\nArborリファレンス : ActivateGameObject OnTriggerEnterTransitionにより、Playerタグのオブジェクトが入ったらLight Onステートに遷移する。\nArborリファレンス : OnTriggerEnterTransition\n(OnTriggerEnterTransitionを使用するには、ArborFSMのあるGameObjectにColliderなどの設定が必要です)  Light Onステート\n\r  ActivateGameObectにより、Spotlightオブジェクトがアクティブに変更される。 OnTriggerExitTransitionにより、Playerタグのオブジェクトが出たらLight Offステートに遷移する。\nArborリファレンス : OnTriggerExitTransition\n(OnTriggerExitTransitionを使用するには、ArborFSMのあるGameObjectにColliderなどの設定が必要です)  Wait Triggerステート\n\r  常駐ステートなので、どのステートが実行されているかにかかわらず常時実行される。 TriggerTransitionにより、Destroyメッセージが来たらExplosion \u0026amp; Destroyステートに遷移する。\nArborリファレンス : TriggerTransition  なお、Triggerメッセージを送るにはSendTriggerを使用します。\nArborリファレンス : SendTrigger\n他のFSMからSendTriggerを使用して、間接的に遷移命令を出す形式です。   Explosion \u0026amp; Destroyステート\n\r  InstantiateGameObjectにより、プレハブをインスタンス化。\nArborリファレンス : InstantiateGameObject\n(ここでは仮組のため空のままになっていますが、パーティクルなどを設定する想定です) DestroyGameObjectにより、LightFSMオブジェクト(自分自身のGameObject)を破棄。\nArborリファレンス : DestroyGameObject   状態に挙動を組み合わせ、遷移条件に合致したら遷移していく流れがわかったかと思います。\n今回のような簡単な例であれば直接MonoBehaviourを書いたほうが楽という方もいるかと思いますが、\n状態が複数入り乱れるようになった際、グラフ形式で視覚化できるのは大きな利点となるでしょう。\nステートマシンの使い方 詳しい使い方はこちらを参照してください\nステートマシンの使い方\nスクリプティング スクリプトによるカスタマイズについてはこちらを参照してください\nスクリプティング : StateBehaviour\n"
    },
    {
        "uri": "/manual/scripting/behaviourtree/service.html",
        "title": "Service",
        "tags": [],
        "description": "",
        "summary": "Serviceのスクリプトを作成し、行いたい処理を記述することで独自の更新処理などを追加できます。 Serviceスクリプトファイルの作成 Pr",
        "content": " Serviceのスクリプトを作成し、行いたい処理を記述することで独自の更新処理などを追加できます。\nServiceスクリプトファイルの作成  Projectウィンドウから作成したい場所で右クリック。 右クリックメニューから、「Create \u0026gt; Arbor \u0026gt; BehaviourTree \u0026gt; Service C# Script」を選択。\n\r  ファイル名を入力して決定  呼び出される関数 作成したServiceをコンポジットノードやアクションノードに追加すると、スクリプトの各関数が呼びだされるようになります。\n OnAwake\n初めてノードがアクティブになった時に呼ばれます。 OnStart\nノードがアクティブになった時に呼ばれます。 OnUpdate\nノードがアクティブの間、毎回呼ばれます。\n実行タイミングについては、BehaviourTreeのUpdateSettingsを参照してください。\nArborリファレンス : BehaviourTree OnAbort\nノードがDecoratorにより中断する時に呼ばれます。 OnEnd\nノードが終了するときに呼ばれます。  注意点  MonoBehaviourのenabledは実行制御のために内部で使用しているため、代替となるbehaviourEnabledを使用してください。  呼び出し順 \r  ノードに複数のServiceを追加している場合は上から順に呼ばれます。 OnEnableとOnDisable以外のMonoBehaviourのコールバックメソッドも使用できますが、Start()は初回OnUpdate()の後に呼ばれてしまうため注意してください。  変数の宣言 \r 作成したスクリプトにpublicもしくはSerializedField属性をつけたフィールドを宣言することでArbor Editorで編集可能になります。\n1 2 3 4 5 6 7 8 9 10 11 12  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor; using Arbor.BehaviourTree;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestService : Service { public string myName; // 略 }   \nデータフロー Serviceではデータフローによる値の入出力が可能です。\n詳しくは、「スクリプティング : データフロー」を参照してください。\nスクリプティング : データフロー\n"
    },
    {
        "uri": "/manual/scripting/calculator.html",
        "title": "演算ノード",
        "tags": [],
        "description": "",
        "summary": "演算ノードをカスタマイズするには、演算ノード用のスクリプトファイルを作成し、行いたい処理を記述する必要があります。 Calculatorスクリ",
        "content": " 演算ノードをカスタマイズするには、演算ノード用のスクリプトファイルを作成し、行いたい処理を記述する必要があります。\nCalculatorスクリプトファイルの作成  Projectウィンドウから作成したい場所で右クリック。 右クリックメニューから、「Create \u0026gt; Arbor \u0026gt; Calculator C# Script」を選択。\n\r  ファイル名を入力して決定  呼び出される関数 作成したCalculatorをArborEditorにて演算ノードに割り当てると、スクリプトの各関数が呼び出されるようになります。\n OnCalculate\n演算が必要な際に呼ばれます。\nここで演算処理を記述し、OutputSlot.SetValueにてデータを出力してください。 OnCheckDirty\n再演算が必要かどうかの判定に呼ばれます。必要に応じてoverrideしてください。\n演算に必要なデータが変更されており再演算が必要かどうかを返してください。\n入力スロットの接続状態による再演算はArborの内部的に判定しているため意識する必要はありません。\n(Transform.positionなど、外部オブジェクトの値を取り扱う際にtrueを返すようにする必要があります) MonoBehaviourのメッセージ関数\n詳しくはUnity ScriptReferenceのMonoBehaviourのMessagesを参照してください。  注意点  MonoBehaviourのenabledは実行制御のために内部で使用しているため、代替となるbehaviourEnabledを使用してください。  演算の流れ  必要に応じてInputSlot.GetValue()を呼び出します。 再演算が必要かどうかの判定にOnCheckDirtyが呼ばれます。\n(ステートなどからOutputSlot.SetValueによって事前に値が変更されていた場合はOnCheckDirtyの結果にかかわらず再演算が行われます) 再演算が必要な場合にOnCalculateが呼ばれます。  OnCaluculateの中で必要に応じてInputSlot.GetValue()を呼び出します。 以下、再演算が必要なくなるまでInputSlotを辿って値を取得します。   変数とArbor Editor 基本はStateBehaviourの変数とArbor Editorと同じく、変数を宣言することでArbor Editorに表示され編集可能になります。\nデータフロー 演算ノードを活用するには、データフローによる値の入出力が重要です。\n詳しくは、「スクリプティング : データフロー」を参照してください。\nスクリプティング : データフロー\n"
    },
    {
        "uri": "/manual/behaviourtree.html",
        "title": "ビヘイビアツリー",
        "tags": [],
        "description": "",
        "summary": "ビヘイビアツリーとは？ ビヘイビアツリーとは、挙動の優先順位や条件を明確にし制御しやすくするための木構造です。 例えば、敵AIを考えてみましょう",
        "content": " ビヘイビアツリーとは？  ビヘイビアツリーとは、挙動の優先順位や条件を明確にし制御しやすくするための木構造です。 例えば、敵AIを考えてみましょう。  敵とプレイヤーとの距離が１０メートル以内なら近づく。 それ以外の時は決まった経路を移動する。  プレイヤーに近づく挙動は決まった経路を移動する挙動に比べて優先度が高いと言えます。 ArborのBehaviourTreeで仮組すると以下のようになります。\n\r (解説はのちほど)  左のノードほど優先度が高く、右に行くにつれ優先度が低くなります。 また、Decoratorと呼ばれるスクリプトをノードに追加することで条件判定を行い、実行するノードを制御しています。   ノードの構成要素 ルートノード \r ビヘイビアツリーを実行する際に一番最初にアクティブになるノードです。\n１つの子ノードと接続できます。\nコンポジットノード \r １つか複数の子ノードを持ち、どの子ノードを実行するかの制御を行います。\nどのように制御するかはCompositeBehaviourスクリプトで記述されています。\nまた、後に説明するDecoratorスクリプトやServiceスクリプトを追加できます。\n組み込みCompositeBehaviour  Selector\n子ノードを左から順に実行し、子ノードが 成功を返した時点で終了 し成功を返します。\nすべての子ノードが失敗を返した場合は失敗を返します。\n左から順に成功ノードを探し、それ以降のノードは実行したくない場合に用います。 Sequencer\n子ノードを左から順に実行し、子ノードが 失敗を返した時点で終了 し失敗を返します。\nすべての子ノードが成功を返した場合は成功を返します。\n子ノードが成功を返す限りすべて実行させたい場合に用います。  組み込みCompositeBehaviourのリファレンスはこちらを参照してください。\nArborリファレンス : 組み込みCompositeBehaviour\nアクションノード \r アクションを実行するノードです。\nどのようなアクションを行うかはActionBehaviourスクリプトで記述します。\nまた、こちらもDecoratorスクリプトやServiceスクリプトを追加できるようになっています。\n組み込みActionBehaviourのリファレンスはこちらを参照してください。\nArborリファレンス : 組み込みActionBehaviour\nActionBehaviourスクリプトの作成についてはこちら。\nスクリプティング : ActionBehaviour\nDecoratorスクリプト \r 条件判定を行って実行中ノードの中断や割り込みを行ったり、終了するタイミングで繰り返し判定などを行えるスクリプトです。\nコンポジットノードやアクションノードに追加して使用します。\n組み込みDecoratorのリファレンスはこちらを参照してください。\nArborリファレンス : 組み込みDecorator\nDecoratorスクリプトの作成についてはこちら。\nスクリプティング : Decorator\nAbortFlagsについて 中断や割り込みの対象はAbortFlagsで制御します。\n Self\n自ノードもしくはその配下のノードが実行中に条件判定を行う。\n条件判定の結果がfalseである場合は中断し、親ノードへ失敗を返す。 LowerPriority\n自ノードよりも右にある低優先度のノードが実行中に条件判定を行う。\n条件判定の結果がtrueである場合は実行中ノードを中断し、自ノードがアクティブになる。  上記２つのフラグを組み合わせて設定できます。\nまた、AbortFlagsに関係なく自ノードがアクティブになる際に一度条件判定を行い、結果がfalseであればそのまま失敗として返します。\nServiceスクリプト Serviceスクリプトはコンポジットノードとアクションノードに追加でき、ノードがアクティブの間何かしらの処理を行えるスクリプトです。\n例のBehaviourTreeでは使用していませんが、\n例えばプレイヤーとの距離をParameterに格納するServiceをSelectorノードに追加するなど、補助的な処理を記述するのに適しています。\nServiceスクリプトの作成についてはこちら。\nスクリプティング : Service\n実行の解説 では、先ほどの例をもう一度見てみましょう。\n\r  まずルートノードからはじまります。 Selectorノードにより、子ノードの成功ノードを探して左から順に実行していきます。\n\r  Agent Move To Transformノードでは、ParameterCheckデコレータが追加されているため、Parameterを条件に判定が行われます。\n\r  例として、プレイヤーとの距離はDistanceパラメータに格納しているものと仮定して作成しています。\n\r  仮にDistanceが15だったとすると、ParameterCheckデコレータがfalseを返すため、Agent Move To Transformノードは失敗になり、Selectorに戻ります。 SelectorはAgent Move To Transformノードが失敗したため、次のAgent Move On Waypointノードを実行します。\n\r  Agent Move On Waypointアクションは、TypeがCycleになっているため中断などが起きない限り繰り返し実行し続けます。 ここで、Distanceパラメータを10以下にしてみましょう。\n\r  Agent Move To TransformノードのParameterCheckの条件に合致するため、現ノードを中断して割り込みします。\n\r  再びDistanceパラメータを10より大きくすると、Agent Move To Transformノードが中断されAgent Move On Waypointノードがアクティブになるのが確認できます。\n\rDistanceパラメータによってアクティブノードが変わる様子\n\r   このように、右に行くほど実行優先度が低くなり、また優先度が高いノードのDecoratorにより割り込みなどができるのがわかったかと思います。\n今回のような簡単な例であれば有限ステートマシンでも特に複雑にならずに組めますが、\nステートの数が多く条件が複雑化しそうな場合ではビヘイビアツリーの方が、遷移線が交差することもなく実行ノード側に条件が記述できるためメンテナンスしやすい状態遷移が組めるようになります。\nビヘイビアツリーの使い方 詳しい使い方はこちらを参照してください\nビヘイビアツリーの使い方\nスクリプティング 各種スクリプトによるカスタマイズについてはこちらを参照してください\nスクリプティング\n"
    },
    {
        "uri": "/manual/scripting/parameterreference.html",
        "title": "パラメータの参照",
        "tags": [],
        "description": "",
        "summary": "ParameterReference ParameterReference関連クラスをフィールドに宣言することで、パラメータを参照できるようになります。 スクリプト例 1 2 3 4 5 6",
        "content": " ParameterReference ParameterReference関連クラスをフィールドに宣言することで、パラメータを参照できるようになります。\nスクリプト例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  using UnityEngine;\rusing Arbor;\rpublic class TestParameterReference : MonoBehaviour\r{\rpublic IntParameterReference intParameter;\rvoid Start ()\r{\rif (intParameter.parameter != null)\r{\rDebug.Log(intParameter.parameter.name + \u0026#34; : \u0026#34; + intParameter.parameter.intValue);\r}\t}\r}   このスクリプトをGameObjectに追加すると以下のようになります。\n\r    フィールド名 説明     Container 参照するParameterContainerボタンをクリックするとConstantかDataSlotを選択可能。   Parameter 参照するパラメータContainerのタイプをDataSlotにした場合は文字列での名前指定。    取得したParameterについては、スクリプトリファレンスを参照してください。\nスクリプトリファレンス : Parameter\nParameterReference関連クラス  IntParameterReference FloatParameterReference BoolParameterReference GameObjectParameterReference StringParameterReference Vector2ParameterReference Vector3ParameterReference QuaternionParameterReference RectParameterReference BoundsParameterReference ColorParameterReference TransformParameterReference RectTransformParameterReference RigidbodyParameterReference Rigidbody2DParameterReference ComponentParameterReference LongParameterReference AnyParameterReference\n(Variableパラメータの参照に使用します)  FlexibleField FlexibleField関連クラスを使用すると、固定値の指定やパラメータ参照もしくはデータフローからの入力を切り替えて参照できます。\nスクリプト例 1 2 3 4 5 6 7 8 9 10 11 12 13 14  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestFlexibleFieldBehaviour : StateBehaviour\r{\rpublic FlexibleInt flexibleInt;\rpublic override void OnStateBegin()\r{\rDebug.Log(\u0026#34;flexibleInt : \u0026#34; + flexibleInt.value);\r}\r}   このスクリプトをArborFSMのステートに追加すると以下のようになります。\n\r フィールド右端にあるボタンをクリックすると参照方法が変更できます。\n\r 「Parameter」に変更することで、ParameterReferenceと同じように参照できるようになります。\n\r FlexibleField関連クラス  FlexibleInt FlexibleFloat FlexibleBool FlexibleGameObject FlexibleString FlexibleEnumAny FlexibleVector2 FlexibleVector3 FlexibleQuaternion FlexibleRect FlexibleBounds FlexibleColor FlexibleTransform FlexibleRectTransform FlexibleRigidbody FlexibleRigidbody2D FlexibleComponent FlexibleLong FlexibleField\n(Variableパラメータの参照に使用します)  参照する型の制約 AnyParameterReferenceやComponentParameterReferenceは属性を指定することで、参照する型を制約することができます。\nスクリプト例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestConstraintReferenceBehaviour : StateBehaviour\r{[ClassExtends(typeof(AudioSource))]\rpublic ComponentParameterReference audioSource = new ComponentParameterReference();[ClassExtends(typeof(AudioSourceCurveType))]\rpublic AnyParameterReference audioSourceCurveType = new AnyParameterReference();\rpublic FlexibleAnimationCurve curve = new FlexibleAnimationCurve(AnimationCurve.Linear(0, 0, 1, 1));\r// Use this for enter state\r\tpublic override void OnStateBegin()\r{\rAudioSource source_ = null;\rParameter audioSourceParameter = audioSource.parameter;\rif (audioSourceParameter != null)\r{\rsource_ = audioSourceParameter.objectReferenceValue as AudioSource;\r}\rAudioSourceCurveType curveType_ = AudioSourceCurveType.CustomRolloff;\rParameter curveTypeParameter = audioSourceCurveType.parameter;\rif (curveTypeParameter != null)\r{\rcurveTypeParameter.GetVariable\u0026lt;AudioSourceCurveType\u0026gt;(ref curveType_);\r}\rAnimationCurve curve_ = curve.value;\rif (source_ == null)\r{\rreturn;\r}\rsource_.SetCustomCurve(curveType_, curve_);\r}\r}    スクリプトを追加した例\n\r ParameterContainer例\n\r (AudioSourceCurveTypeはVariableを作成して登録しました)\n使用できる属性    クラス 属性     AnyParameterReference ClassTypeConstraintAttributeから派生したクラスSlotTypeAttribute   ComponentParameterReference ClassTypeConstraintAttributeから派生したクラスSlotTypeAttribute指定の他、Componentクラスに制約される。   FlexibleComponent ClassTypeConstraintAttributeから派生したクラスSlotTypeAttribute指定の他、Componentクラスに制約される。    "
    },
    {
        "uri": "/manual/parametercontainer.html",
        "title": "ParameterContainer",
        "tags": [],
        "description": "",
        "summary": "ParameterContainerはグラフ間でのデータ共有などを行うために使用するコンポーネントです。 GameObjectにParamet",
        "content": " ParameterContainerはグラフ間でのデータ共有などを行うために使用するコンポーネントです。\nGameObjectにParameterContainerを追加し、各種ある型のパラメータを設定します。\nParameterContainerの追加 GameObjectの作成 HierarchyのCreateボタンをクリックするか右クリックしたメニューの「Create」から、\n「Arbor \u0026gt; ParameterContainer」を選択すると、ParameterContainerが追加された状態のGameObjectが作成できます。\n\r GameObjectに追加  適用したいGameObjectを選択。 「メニュー \u0026gt; Component \u0026gt; Arbor \u0026gt; ParameterContainer」を選択 。\n\r  あるいはInspectorの「Add Componentボタン \u0026gt; Arbor \u0026gt; ParameterContainer」を選択。\n\r   ParameterContainerの編集 パラメータの追加  「Parameters」の右下の＋ボタンをクリック。\n追加したい型を選択。  \r パラメータの編集  名前、値を選択し編集。  \r パラメータの削除  パラメータを選択し、－ボタンをクリック。  \r パラメータの種類    種類 Inspector 説明     Int \r  符号付き32bit整数   Float \r  符号付き32bit浮動小数点数   Bool \r  ブール   GameObject \r  GameObjectの参照   String \r  文字列   Enum \r  enum型(型指定可能)   Vector2 \r  ２次元ベクトル   Vector3 \r  ３次元ベクトル   Quaternion \r  ４元数   Rect \r  2次元の矩形   Bounds \r  ３次元空間の範囲   Color \r  色   Transform \r  Transformコンポーネントの参照   RectTransform \r  RectTransformコンポーネントの参照   Rigidbody \r  Rigidbodyコンポーネントの参照   Rigidbody2D \r  Rigidbody2Dコンポーネントの参照   Component \r  コンポーネントの参照(型指定可能)   Long \r  符号付き64bit整数   Variable  自作可能なパラメータ型    Variableについて Variableを使用するとパラメータを自作することができます。\n詳しくは、「スクリプティング : Variable」を参照してください。\nスクリプティング : Variable\nパラメータの参照 自作のスクリプトからパラメータを参照できます。\n詳しくは、「スクリプティング : パラメータの参照」を参照してください。\nスクリプティング : パラメータの参照\nGlobalParameterContainerについて GlobalParameterContainerはシーンを変更しても保持しておきたいパラメータがある場合に使用するコンポーネントです。\nGlobalParameterContainerの追加  適用したいGameObjectを選択。 「メニュー \u0026gt; Component \u0026gt; Arbor \u0026gt; GlobalParameterContainer」を選択 。\n\r  あるいはInspectorの「Add Componentボタン \u0026gt; Arbor \u0026gt; GlobalParameterContainer」を選択。\n\r  また、HierarchyのCreateボタン「Arbor \u0026gt; GlobalParameterContainer」からGlobalParameterContainerがアタッチされた状態のGameObjectが作成できる。\n\r   GlobalParameterContainerの設定  あらかじめシーン間で共有したいパラメータを設定したParameterContainerを作成し、Prefab化。\n\r  GlobalParameterContainerが追加されているGameObjectを選択。\nInspectorのPrefabに作成しておいたParameterContainerのPrefabを指定。\n\r   GlobalParameterContainer経由でパラメータを参照 ParameterReferenceのContainerフィールドにGlobalParameterContainerを指定するとパラメータが参照できるようになります。\n関連する組み込みスクリプト ここでは主にParameterContainerを参照する組み込みスクリプトを一部紹介します。\nStateBehaviour    スクリプト 説明     CalcParameter Parameterの値を演算して変更する。   SetBoolParameterFromUIToggle Toggleの値をParameterに設定する。   SetFloatParameterFromUISlider Sliderの値をParameterに設定する。   ParameterTransition Parameterの値を判定して遷移する。    Decorator    スクリプト 説明     ParameterCheck Parameterのチェック   ParameterConditionalLoop Parameterの条件によるループ。    他にも、FlexibleFieldを使用して値を取得する組み込みスクリプトが多数ありますのでリファレンスを参照してみてください。\nArborリファレンス\n"
    },
    {
        "uri": "/manual/scripting/dataflow.html",
        "title": "データフロー",
        "tags": [],
        "description": "",
        "summary": "出力スロット OutpotSlotIntなどの出力スロットを宣言することでデータ出力ができます。 スクリプト例 TestOutputSlotBeh",
        "content": " 出力スロット OutpotSlotIntなどの出力スロットを宣言することでデータ出力ができます。\nスクリプト例 TestOutputSlotBehaviourスクリプトファイルを作成し、以下のコードを記述してください。\n1 2 3 4 5 6 7 8 9 10 11 12 13  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestOutputSlotBehaviour : StateBehaviour\r{\rpublic OutputSlotInt outputSlot;\rpublic override void OnStateBegin()\r{\routputSlot.SetValue(Random.Range(100, 200));\r}\r}   \nこのスクリプトをArborFSMのステートに追加すると以下のようになります。\n\r 出力スロットクラス  OutputSlotInt OutputSlotFloat OutputSlotBool OutputSlotGameObject OutputSlotString OutputSlotVector2 OutputSlotVector3 OutputSlotQuaternion OutputSlotRect OutputSlotBounds OutputSlotColor OutputSlotTransform OutputSlotRectTransform OutputSlotRigidbody OutputSlotRigidbody2D OutputSlotComponent OutputSlotLong OutputSlotCollider OutputSlotCollider2D OutputSlotCollision OutputSlotCollision2D OutputSlotRaycastHit OutputSlotRaycastHit2D OutputSlotUnityObject OutputSlotAny  入力スロット InputSlotIntなどの入力スロットを宣言することでデータ出力ができます。\nスクリプト例 TestInputSlotBehaviourスクリプトファイルを作成し、以下のコードを記述してください。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestInputSlotBehaviour : StateBehaviour\r{\rpublic InputSlotInt inputSlot;\rpublic override void OnStateBegin()\r{\rint intValue = 0;\rif (inputSlot.GetValue(ref intValue))\r{\rDebug.Log(\u0026#34;inputSlot : \u0026#34; + intValue);\r}\relse\r{\rDebug.LogWarning(\u0026#34;inputSlot : not connected.\u0026#34;);\r}\r}\r}   \nこのスクリプトをArborFSMのステートに追加すると以下のようになります。\n\r 入力スロットクラス  InputSlotInt InputSlotFloat InputSlotBool InputSlotGameObject InputSlotString InputSlotVector2 InputSlotVector3 InputSlotQuaternion InputSlotRect InputSlotBounds InputSlotColor InputSlotTransform InputSlotRectTransform InputSlotRigidbody InputSlotRigidbody2D InputSlotComponent InputSlotLong InputSlotCollider InputSlotCollider2D InputSlotCollision InputSlotCollision2D InputSlotRaycastHit InputSlotRaycastHit2D InputSlotUnityObject InputSlotAny  FlexibleField 入力スロットだけでなく、固定値やパラメータも扱いたい場合はFlexibleFieldが便利です。\nスクリプト例 TestFlexibleFieldBehaviourスクリプトファイルを作成し、以下のコードを記述してください。\n1 2 3 4 5 6 7 8 9 10 11 12 13  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestFlexibleFieldBehaviour : StateBehaviour\r{\rpublic FlexibleInt flexibleInt;\rpublic override void OnStateBegin()\r{\rDebug.Log(\u0026#34;flexibleInt : \u0026#34; + flexibleInt.value);\r}\r}   \nこのスクリプトをArborFSMのステートに追加し、参照タイプをCalculatorにすると以下のようになります。\n\r FlexibleField関連クラス  FlexibleInt FlexibleFloat FlexibleBool FlexibleGameObject FlexibleString FlexibleEnumAny FlexibleVector2 FlexibleVector3 FlexibleQuaternion FlexibleRect FlexibleBounds FlexibleColor FlexibleTransform FlexibleRectTransform FlexibleRigidbody FlexibleRigidbody2D FlexibleComponent FlexibleLong FlexibleField\n(継承して使用します)  スロットの型制約 \r InputSlotAnyやInputSlotComponentなどでは型制約を属性で指定できます。\nスクリプト例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestConstraintSlotBehaviour : StateBehaviour\r{[ClassExtends(typeof(AudioSource))]\rpublic InputSlotComponent audioSource = new InputSlotComponent();[ClassExtends(typeof(AudioClip))]\rpublic InputSlotUnityObject audioClip = new InputSlotUnityObject();[ClassExtends(typeof(AudioSourceCurveType))]\rpublic InputSlotAny audioSourceCurveType = new InputSlotAny();\rpublic FlexibleAnimationCurve curve = new FlexibleAnimationCurve(AnimationCurve.Linear(0, 0, 1, 1));\rpublic override void OnStateBegin()\r{\rAudioSource source_ = audioSource.GetValue\u0026lt;AudioSource\u0026gt;();\rAudioClip clip_ = audioClip.GetValue\u0026lt;AudioClip\u0026gt;();\rAudioSourceCurveType curveType_ = AudioSourceCurveType.CustomRolloff;\raudioSourceCurveType.GetValue\u0026lt;AudioSourceCurveType\u0026gt;(ref curveType_);\rAnimationCurve curve_ = curve.value;\rif (source_ == null || clip_ == null)\r{\rreturn;\r}\rsource_.clip = clip_;\rsource_.SetCustomCurve(curveType_, curve_);\r}\r}    使用できる属性    クラス 属性     OutputSlotAny SlotTypeAttribute   InputSlotAny ClassTypeConstraintAttributeから派生したクラスSlotTypeAttribute   InputSlotComponent ClassTypeConstraintAttributeから派生したクラスSlotTypeAttribute指定の他、Componentクラスに制約される。   InputSlotUnityObject ClassTypeConstraintAttributeから派生したクラスSlotTypeAttribute指定の他、UnityEngine.Objectクラスに制約される。   FlexibleComponent ClassTypeConstraintAttributeから派生したクラスSlotTypeAttribute指定の他、Componentクラスに制約される。    カスタマイズ データスロットの作成 自作したクラスのデータスロットも作成できます。\n詳しくは、「スクリプティング : データスロット」を参照してください。\nスクリプティング : データスロット\nVariable パラメータも作成する場合は、Variable Generatorを使用すると楽に作成できます。\n詳しくは、「スクリプティング : Variable」を参照してください。\nスクリプティング : Variable\n演算ノード 演算ノードに使用するスクリプトも作成できます。\n詳しくは、「スクリプティング : 演算ノード」を参照してください。\nスクリプティング : 演算ノード\n"
    },
    {
        "uri": "/manual/dataflow.html",
        "title": "データフロー",
        "tags": [],
        "description": "",
        "summary": "Arborにはグラフのノード間でデータを受け渡すための機能が備わっています。 データの流れ データの入出力スロットを接続するとデータフローを活用",
        "content": " Arborにはグラフのノード間でデータを受け渡すための機能が備わっています。\nデータの流れ データの入出力スロットを接続するとデータフローを活用できます。\n例 組み込みスクリプトを使用した例では以下のようなデータフローが簡単に組めるようになっています。\n\r  InstantiateGameObjectでプレハブをインスタンス化。 インスタンス化したGameObjectを出力。 Rigidbody.GetでRigidbodyコンポーネントを取り出し。 AddForceRigidbodyで受け取ったRigidbodyに力を加える。  また、例ではArborFSMを使用していますが、BehaviourTreeでも同様にデータの受け渡しができます。\n参考リンク  StateBehaviour : InstantiateGameObject StateBehaviour : AddForceRigidbody Calculator : Rigidbody.Get  データスロットの使い方 接続  データスロットのフィールドをドラッグ。 同じ型の対となるスロットにドロップ。  \r 切断  接続ラインを右クリック。 「切断」を選択  \r FlexibleField FlexibleField関連クラスのフィールドでは、複数の参照方法を選択できますので柔軟に値が設定できます。\n指定方法の選択  フィールド横のボタンをクリック。 タイプを選択。  \r タイプ \r    項目 内容     Constant 定数値。値を設定するフィールドが表示される。   Parameter パラメータを参照する。パラメータについては ParameterContainer を参照してください。   Random(数値型のみ) 指定範囲の中からランダムに取得する。   DataSlot データの入力スロット。    リルートノード リルートノードを使用すると、データフローのラインを整理しやすくなります。\nリルートノードを作成して接続  データスロットのフィールドをドラッグ。 リルートノードを作成したいグラフ内の位置でドロップ メニューの”リルート”を選択  \r リルートノード挿入  接続ライン上のリルートノードを作成したい位置を右クリック。 メニューの”リルート”を選択。  \r リルートノードの方向変更  方向を変更するリルートノードを選択 表示される方向アイコンをドラッグして方向を変更。  \r 接続ラインについて 値表示 プレイ中に接続ラインをマウスオーバーすると、現在値が表示されます。\n\r また、接続ラインの右クリックメニューから「データ値を常に表示」を選択すると、マウスオーバーしなくても表示されるようになります。\n全ての接続ラインの値を表示したい場合は、ツールバーの「デバッグ」メニューから「すべてのデータ値を表示」を選択すると切り替わります。\n\r 右クリックメニュー 接続ライン上を右クリックすると、メニューが表示されます。\n\r    項目 内容     データ値を常に表示 プレイ時にデータ値を常に表示します。   リルート リルートノードを挿入します。   切断 切断します。    演算ノードについて 演算ノードはデータの入出力を持った演算用ノードです。\n数値計算を行ったりフィールドにアクセスして出力したりできます。\n演算ノードの作成  Arbor Editorの適当な位置を右クリック。 「演算ノード作成」をクリック。\n作成したい演算ノードをリストから選択  \r 組み込みCalculator よく使用する演算ノードは初めから用意されています。\nArborリファレンス : Calculator リファレンス\nスクリプティング 自作したスクリプトからもデータフローを使用できます。\n詳しくは、「スクリプティング : データフロー」を参照してください。\nスクリプティング : データフロー\n"
    },
    {
        "uri": "/manual/scripting/dataslot.html",
        "title": "データスロット",
        "tags": [],
        "description": "",
        "summary": "ここでは、自作クラスのデータスロットを作成する方法を説明します。 例として簡単なプレイヤーデータの作成を通してデータをやり取りするまでの作り方",
        "content": " ここでは、自作クラスのデータスロットを作成する方法を説明します。\n例として簡単なプレイヤーデータの作成を通してデータをやり取りするまでの作り方を説明していきます。\nPlayerDataスクリプトファイルの作成 スクリプトファイルを作成していきます。\n Projectウィンドウの右クリックメニューから「Create \u0026gt; C# Script」を選択。 今回は名前をPlayerDataとします。  PlayerData.csには以下のように記述します。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  using UnityEngine; using System.Collections; using Arbor;[System.Serializable] public class PlayerData { public int maxHP; public int hp; }[System.Serializable] public class OutputSlotPlayerData : OutputSlot\u0026lt;PlayerData\u0026gt; { }[System.Serializable] public class InputSlotPlayerData : InputSlot\u0026lt;PlayerData\u0026gt; { }    コードの解説 PlayerDataクラスの作成 今回は単純に最大HPと現在HPを持ったクラスを作成しています。\nOutputSlotPlayerDataクラスの作成 PlayerDataクラスを出力するためのクラスを作成しています。\nすべての処理はOutputSlot\u0026lt;T\u0026gt;に用意されているため、特に中身は記述する必要はありません。\nジェネリッククラスがシリアライズできないというUnityの仕様を回避するために用意しています。\nInputSlotPlayerDataクラスの作成 PlayerDataクラスを入力するためのクラスを作成しています。\nこちらもInputSlot\u0026lt;T\u0026gt;に必要な処理が用意されているため、特に中身を記述する必要はありません。\n"
    },
    {
        "uri": "/manual/scripting/variable.html",
        "title": "Variable",
        "tags": [],
        "description": "",
        "summary": "ここでは、自作パラメータをParameterContainerに登録する方法を説明します。 Variableスクリプトファイルの作成 Variable Gene",
        "content": " ここでは、自作パラメータをParameterContainerに登録する方法を説明します。\nVariableスクリプトファイルの作成 Variable Generatorによるスクリプトの生成 自作パラメータ用スクリプトを作成します。\n Projectウィンドウの右クリックメニューから「Create \u0026gt; Arbor \u0026gt; Variable C# Script」を選択。\n\r  Variale Generatorウィンドウの「Variable Name」フィールドにパラメータクラス名を入力 「Create」ボタンを押してスクリプト作成。\n\r  使用できない名前の場合はエラーボックスが表示されるため、Variable Nameを修正してください。 OpenEditorチェックボックスがチェックされていると、「Create」ボタン押下後にスクリプトエディタが開きます。   作成例 「Variable Name」にEnemyInfoと入力し、「Create」ボタンを押して作成されたスクリプト例\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[System.Serializable] public class EnemyInfo { // Declare Serialize Fields }[System.Serializable] public class FlexibleEnemyInfo : FlexibleField\u0026lt;EnemyInfo\u0026gt; { public FlexibleEnemyInfo(EnemyInfo value) : base(value) { } public FlexibleEnemyInfo(AnyParameterReference parameter) : base(parameter) { } public FlexibleEnemyInfo(InputSlotAny slot) : base(slot) { } public static explicit operator EnemyInfo(FlexibleEnemyInfo flexible) { return flexible.value; } public static explicit operator FlexibleEnemyInfo(EnemyInfo value) { return new FlexibleEnemyInfo(value); } }[System.Serializable] public class InputSlotEnemyInfo : InputSlot\u0026lt;EnemyInfo\u0026gt; { }[System.Serializable] public class OutputSlotEnemyInfo : OutputSlot\u0026lt;EnemyInfo\u0026gt; { }[AddComponentMenu(\u0026#34;\u0026#34;)] public class EnemyInfoVariable : Variable\u0026lt;EnemyInfo\u0026gt; { }    解説  EnemyInfo\n自作するパラメータのクラス。\nシリアライズ用フィールドを追加することで、ParameterContainerで自作パラメータを設定できるようになります。 FlexibleEnemyInfo\nConstant、Parameter、Calculatorを切り替えて参照できるようにするためのクラス。 InputSlotEnemyInfo\nEnemyInfoの入力スロット用クラス。 OutputSlotEnemyInfo\nEnemyInfoの出力スロット用クラス。 EnemyInfoVariable\nParameterContainerへ登録するためのVariableクラス。\nクラス名とスクリプトファイル名が一致している必要があります。  フィールドの追加 生成したスクリプトにフィールドを追加します。\n例として、EnemyInfoにいくつかフィールドを追加してみます。\n1 2 3 4 5 6 7 8  [System.Serializable] public class EnemyInfo { // Declare Serialize Fields \tpublic string displayName; public Sprite icon; }   \nParameterContainerへの追加 作成したVariableをParameterContainerへ追加します。\n あらかじめParameterContainerを作成しておいてください。 「＋」ボタンを押し、「Variable \u0026gt; 作成したVariable名」を選択。\n\r  パラメータが追加される\n\r   Variableパラメータへの参照 FlexibleField 生成したスクリプトファイルに定義されているFlexible+Variable NameのクラスをStateBehaviourなどに持たせることで参照できます。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class EnemyInfoBehaviour : StateBehaviour { public FlexibleEnemyInfo enemyInfo; // Use this for enter state \tpublic override void OnStateBegin() { EnemyInfo value = enemyInfo.value; Debug.Log(value.displayName); } }    \r AnyParameterReference Parameterを直接参照する場合はAnyParameterReferenceを使用します。\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class EnemyInfoBehaviour2 : StateBehaviour {[ClassExtends(typeof(EnemyInfo))] public AnyParameterReference enemyInfo = new AnyParameterReference(); // Use this for enter state \tpublic override void OnStateBegin() { Parameter enemyInfoParameter = enemyInfo.parameter; if (enemyInfoParameter != null) { EnemyInfo value = enemyInfoParameter.value as EnemyInfo; Debug.Log(value.displayName); } } }    \r "
    },
    {
        "uri": "/manual/scripting.html",
        "title": "スクリプティング",
        "tags": [],
        "description": "",
        "summary": "Arborはスクリプトを記述することで自由にカスタマイズできます。 StateBehaviour ステートに割り当てるスクリプトについて説明します。 BehaviourTree BehaviourT",
        "content": " Arborはスクリプトを記述することで自由にカスタマイズできます。\n StateBehaviour\nステートに割り当てるスクリプトについて説明します。 BehaviourTree\nBehaviourTreeのノードに割り当てるスクリプトについて説明します。 演算ノード\n演算ノードに割り当てるスクリプトについて説明します。 パラメータの参照\nパラメータをスクリプトから参照する方法について説明します。 データフロー\nデータフローをスクリプトから参照する方法について説明します。 データスロット\nデータスロットを自作する方法について説明します。 Variable\nパラメータを自作する方法について説明します。 挙動の属性\n挙動スクリプトに設定できる属性について説明します。  エディタ拡張  Unityで使用可能なインスペクタ拡張やPropertyDrawerなどがStateBehaviourにも使用できる  "
    },
    {
        "uri": "/manual/scripting/behaviourattribute.html",
        "title": "挙動の属性",
        "tags": [],
        "description": "",
        "summary": "StateBehaviourやCalculator、ActionBehaviourなどのスクリプトにはいくつか使用できる属性があります。 対象",
        "content": " StateBehaviourやCalculator、ActionBehaviourなどのスクリプトにはいくつか使用できる属性があります。\n対象スクリプト これから紹介する属性が使用できるスクリプトは以下の通りです。\n StateBehaviour Calculator ActionBehaviour Decorator Service  AddBehaviourMenu 挙動追加メニューでのパスを指定できる属性です。\nスクリプトリファレンス : AddBehaviourMenu\n使用例 スクリプト TestAddBehaviourMenuという名前でスクリプトを作成し、以下のコードを記入してください。\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[AddBehaviourMenu(\u0026#34;ManualExample/TestAddBehaviourMenu\u0026#34;)] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestAddBehaviourMenu : StateBehaviour { }    動作確認 ステートの「挙動追加」をクリックし、挙動追加メニューウィンドウで確認できます。\n\r HideBehaviour 挙動追加メニューには表示しないようにする属性です。\nスクリプトリファレンス : HideBehaviour\n使用例 スクリプト TestHideBehaviourという名前でスクリプトを作成し、以下のコードを記入してください。\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[HideBehaviour] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestHideBehaviour : StateBehaviour { }    動作確認 ステートの「挙動追加」をクリックし、挙動追加メニューウィンドウで表示されていないのが確認できます。\n\r 指定しない場合であれば、Scriptsグループの中に１つだけTestHideBehaviourがあるはずですが、TestHideBehaviourが非表示になっているためScriptsグループも表示されなくなっています。\nBehaviourTitle 挙動のタイトルバーに表示される名前を変更します。\nスクリプトリファレンス : BehaviourTitle\n使用例 スクリプト TestBehaviourTitleという名前でスクリプトを作成し、以下のコードを記入してください。\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[BehaviourTitle(\u0026#34;Manual Example\u0026#34;)] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestBehaviourTitle : StateBehaviour { }    動作確認 ステートの「挙動追加」から「Scripts / TestBehaviourTitle」を選択し、挙動のタイトルバーを確認します。\n\r BehaviourHelp 挙動のタイトルバーに表示されるヘルプボタンをクリックすると開かれるURLを指定する属性です。\nスクリプトリファレンス : BehaviourHelp\n使用例 スクリプト TestBehaviourHelpという名前でスクリプトを作成し、以下のコードを記入してください。\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[BehaviourHelp(\u0026#34;https://www.assetstore.unity3d.com/#!/content/112239\u0026#34;)] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestBehaviourHelp : StateBehaviour { }    動作確認 ステートの「挙動追加」から「Scripts / TestBehaviourHelp」を選択し、挙動のタイトルバーに表示されているヘルプボタンをクリックしてください。\n\r "
    },
    {
        "uri": "/manual/scripting/localization.html",
        "title": "エディタの多言語対応",
        "tags": [],
        "description": "",
        "summary": "挙動スクリプトで使用できる属性やエディタ拡張では多言語対応ができます。 多言語ファイルの準備 多言語対応を行うには、各言語ファイルを追加する必要",
        "content": " 挙動スクリプトで使用できる属性やエディタ拡張では多言語対応ができます。\n多言語ファイルの準備 多言語対応を行うには、各言語ファイルを追加する必要があります。\nまた、言語ファイルを配置するフォルダの登録も行います。\n言語ファイルはエディタでしか使用できないため、Editorフォルダの中に配置します。\nLanguagePath 言語ファイルを配置するフォルダを登録するには、LanguagePathアセットをフォルダに配置します。\n 配置するフォルダをProjectウィンドウで選択し、「Create」ボタンをクリック。 「Arbor / Editor / LanguagePath」を選択。 名前は特に制限がないため、好きな名前を付けてください。  \r 言語ファイルの作成 LanguagePathアセットを配置したフォルダに、「言語名.txt」のファイルを作成すると言語ファイルとして認識されます。\n「言語名」はSystemLanguage列挙子の値と同名である必要があります。\nUnity ScriptReference : SystemLanguage\n言語ファイルの記入 言語ファイルでは、1行ごとに「ワードのキー: 表示する文字列」の形式で記入していきます。\nまた、行頭が「//」の場合はコメントとみなされ、その行は無視されます。\n例えば、Japanese.txtを作成し、以下のように記入します。 1 2 3 4  // ボスの挙動関連\rMenu_ExampleBossAttack: 多言語対応/ボスの攻撃\rExampleBossAttack: ボスの攻撃\rExampleBossDefense: ボスの防御  \nフォルダ構成の例  Assets  Editor  Languages  LanguagePath.asset English.txt Japanese.txt     多言語ワードの参照 エディタ拡張からの参照 エディタ拡張から参照する場合は、ArborEditor.Localization.GetWord()やGetTextContent()を使用します。\nスクリプト例 1 2  EditorGUILayout.LabelField(Localization.GetWord(\u0026#34;ExampleBossAttack\u0026#34;));\rEditorGUILayout.LabelField(Localization.GetWord(\u0026#34;ExampleBossDefense\u0026#34;));   表示例 \r 挙動の属性での参照 AddBehaviourMenuやBehaviourTitleでlocalizationフィールドをtrueにすると、言語ファイルから参照するようになります。\nスクリプト例 1 2 3 4 5 6 7 8 9  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\r[AddBehaviourMenu(\u0026#34;Menu_ExampleBossAttack\u0026#34;,localization=true)]\r[BehaviourTitle(\u0026#34;ExampleBossAttack\u0026#34;,localization =true)]\rpublic class ExampleBossAttackBehaviour : StateBehaviour\r{\r}   表示例 英語 \r 日本語 \r "
    },
    {
        "uri": "/",
        "title": "Home",
        "tags": [],
        "description": "",
        "summary": "Arborを使って、ゲームの進行やAIなどの状態遷移図を視覚的に作成していきましょう。 ArborはUnity Asset Storeから購入できます。 Arbor",
        "content": " Arborを使って、ゲームの進行やAIなどの状態遷移図を視覚的に作成していきましょう。\nArborはUnity Asset Storeから購入できます。\n Arbor Documentationでは、Arborの使い方を学ぶ支援を行っています。\nマニュアルを一通り読んだり、必要になったところだけリファレンスとして使うこともできます。\nArbor を初めて使うのであれば、マニュアル : はじめに をご覧ください。\nドキュメント  マニュアル\nArborの主な使い方について学ぶことができます。 Arbor リファレンス\nArborで使用するコンポーネントなどについてのリファレンスが掲載されています。 スクリプトリファレンス\nArborで使用する主なスクリプトのリファレンスが掲載されています。  マニュアル以外の情報源  チュートリアル\nArborの使い方を実践形式で学ぶことができます。 Arborフォーラム\n使い方について質問したり、機能要望を投稿できます。  "
    },
    {
        "uri": "/search.html",
        "title": "Search",
        "tags": [],
        "description": "",
        "summary": "",
        "content": ""
    },
    {
        "uri": "/manual/arboreditor/howtouse.html",
        "title": "グラフ共通の使い方",
        "tags": [],
        "description": "",
        "summary": "基本的な操作方法 操作 Windows Mac スクロール マウス中ボタンドラッグ マウス中ボタンドラッグ Alt + マウス左ボタンドラッグ option ⌥ + マウス左ボタンドラッグ スクロー",
        "content": " 基本的な操作方法    操作 Windows Mac     スクロール マウス中ボタンドラッグ マウス中ボタンドラッグ    Alt + マウス左ボタンドラッグ option ⌥ + マウス左ボタンドラッグ    スクロールバーでの操作 スクロールバーでの操作    ホイールスクロール\n(設定でズームと切り替え) ホイールスクロール\n(設定でズームと切り替え)   ズームアウト\n(Unity2017.3.0以降のみ) ホイールスクロール\n(設定でスクロールと切り替え) ホイールスクロール\n(設定でスクロールと切り替え)    Alt + マウス右ボタンドラッグ option ⌥ + マウス右ボタンドラッグ   ノードの矩形選択 マウス左ボタンドラッグ マウス左ボタンドラッグ   ノードの移動 ノード上でマウス左ボタンドラッグ ノード上でマウス左ボタンドラッグ   コンテキストメニュー マウス右クリック マウス右クリック    ノードの作成方法などについては各グラフのマニュアルを参照してください。\nショートカットキー    操作 Windows Mac     ノードのコピー Ctrl + Cキー command ⌘ + Cキー   ノードの切り取り Ctrl + Xキー command ⌘ + Xキー   ノードの貼り付け Ctrl + Vキー command ⌘ + Vキー   ノードの複製 Ctrl + Dキー command ⌘ + Dキー   ノードの削除 Deleteキー Deleteキー   選択中ノードの位置にスクロール Fキー Fキー   ノードの全選択 Ctrl + Aキー command ⌘ + Aキー    ノードの名前変更  ノード枠内上部にあるヘッダ部分をダブルクリック、あるいは右クリックか設定アイコンから「リネーム」を選択。\n表示されたテキストボックスに入力。   \r ノードの削除  削除したいノードを選択。 何もない箇所を右クリックし「削除」を選択、もしくはDeleteキーを押す。\n\r   マニュアルを開く 組み込みスクリプトやBehaviourHelp属性をつけたスクリプトは、マニュアルを開くヘルプアイコンが表示されます。\n 各種挙動のタイトルバー横にあるヘルプアイコンをクリックする\n\r   スクリプティング : BehaviourHelp\n"
    },
    {
        "uri": "/manual.html",
        "title": "マニュアル",
        "tags": [],
        "description": "",
        "summary": "ここではArborについての使用方法や詳しいリファレンスを掲載しています。 詳しくは以下リンクより参照してください。 はじめに 初めてArborを",
        "content": "ここではArborについての使用方法や詳しいリファレンスを掲載しています。 詳しくは以下リンクより参照してください。\n はじめに\n初めてArborを利用する方向けに基本的な概要と操作方法を説明しています。 ArborEditorウィンドウ\nArborEditorウィンドウについて説明しています。 ステートマシン\nステートマシンについて説明しています。 ビヘイビアツリー\nビヘイビアツリーについて説明しています。 ParameterContainer\nParameterContainerについて説明しています。 データフロー\nデータスロットによるデータの受け渡しについて説明しています。 スクリプティング \nスクリプトを使用したカスタマイズ方法について解説します。 Arborリファレンス\n主なComponentや組み込みBehaviour、組み込みCalculatorについてのリファレンス スクリプトリファレンス\nスクリプトに関するリファレンス  "
    },
    {
        "uri": "/categories.html",
        "title": "Categories",
        "tags": [],
        "description": "",
        "summary": "",
        "content": ""
    },
    {
        "uri": "/tags.html",
        "title": "Tags",
        "tags": [],
        "description": "",
        "summary": "",
        "content": ""
    }
];