Arbor 3.3.0 リリース


主な新機能

InvokeMethod

Componentのメソッドを呼び出す組み込みスクリプトを追加しました。
引数をデータフローから入力したり、戻り値やout引数をデータフローに出力できます。

組み込みStateBehaviour

  • InvokeMethod追加。

スクリプト

  • ArborEventクラス追加(メソッド呼び出しを行うコアクラス)
  • ShowEventAttributeクラス追加(引数がFlexibleに対応していないメソッドの場合でも選択可能する属性)
  • HideEventAttributeクラス追加(ArborEventで選択できないように隠す属性)

ObjectPool

Arbor内でInstantiateしたオブジェクトを使いまわす機能を追加しました。

組み込みStateBehaviour

  • 事前Poolingを行うAdvancedPooling追加。
  • ObjectPoolからインスタンス化するUsePoolフラグ追加。
    • InstantiateGameObject
    • SubStateMachineReference
    • SubBehaviourTreeReference
  • Destroy時にObjectPoolへ返却するように変更。
    (ObjectPoolからInstantiateしている場合のみPoolに戻す)

    • DestroyGameObject
    • OnCollisionEnterDestroy
    • OnCollisionExitDestroy
    • OnTriggerEnterDestroy
    • OnTriggerExitDestroy
    • OnCollisionEnter2DDestroy
    • OnCollisionExit2DDestroy
    • OnTriggerEnter2DDestroy
    • OnTriggerExit2DDestroy

組み込みActionBehaviour

  • 事前Poolingを行うAdvancedPooling追加。
  • 組み込みスクリプトによるInstantiateをObjectPoolに対応。
    • InstantiateGameObject
    • SubStateMachineReference
    • SubBehaviourTreeReference
  • 組み込みスクリプトによるDestroyをObjectPoolに対応。
    (ObjectPoolからInstantiateしている場合はPoolに戻す)

    • DestroyGameObject

スクリプト

  • ObjectPooling名前空間にObjectPoolクラス追加。

更新内容

追加

ArborEditor

  • データスロットのリルートノードの右クリックメニューに「削除(接続を保持)」を追加。
  • StateLinkリルートノードの右クリックメニューに「削除(接続を保持)」を追加。
  • データスロットの右クリックメニューに「切断」を追加。(出力スロットの場合は「全て切断」)
  • NodeBehaviourのInspector拡張スクリプトがある場合、メニューに「Editorスクリプト編集」を追加。
  • ツールバーのデバッグメニューに「常にすべてのデータ値を表示」チェックを追加。

ArborFSM

  • 無限ループのデバッグ設定追加。

BehaviourTree

  • 無限ループのデバッグ設定追加。

ParameterContainer

  • enum型追加。

組み込みStateBehaviour

  • CalcParameterのenum型対応追加。
  • ParameterTransitionのenum型対応追加。
  • SubStateMachineのメニューに「プレハブに保存」を追加。
  • SubBehavioutTreeのメニューに「プレハブに保存」を追加。

組み込みActionBehaviour

  • SubStateMachineのメニューに「プレハブに保存」を追加。
  • SubBehavioutTreeのメニューに「プレハブに保存」を追加。

組み込みDecorator

  • ParameterCheckのenum型対応追加。
  • ParameterConditionLoopのenum型対応追加。

エディタ拡張

  • 自作スクリプト用言語ファイルの設置場所を指定するLanguagePathアセット追加。

スクリプト

  • OutputSlotTypableクラス追加。
  • InputSlotTypableクラス追加。
  • FlexibleEnumAnyクラス追加(enumを扱えるFlexibleField系クラス)
  • ArborFSMInternalクラス
    • 遷移前ステートを参照できるprevTransitionStateプロパティ追加。
    • 遷移後ステートを参照できるnextTransitionStateプロパティ追加。
  • StateBehaviourクラス
    • 遷移前ステートを参照できるprevTransitionStateプロパティ追加。
    • 遷移後ステートを参照できるnextTransitionStateプロパティ追加。
    • StateLinkの数を返すstateLinkCountプロパティ追加。
    • StateLinkを返すGetStateLinkメソッド追加。
    • StateLinkのキャッシュを再構築するRebuildStateLinkCacheメソッド追加。
  • DataSlotクラスにDisconnectメソッド追加。
  • AddBehaviourMenuの多言語対応追加。
  • BehaviourTitleの多言語対応追加。
  • BehaviourMenuItemの多言語対応追加。

変更

Arbor Editor

  • ノードのメインコンテンツGUIをクリックしたときにノードが選択されないように変更。
  • データスロットのGUIスタイル変更。
  • データスロットのリルートノードをマウスオーバーした時に型名をツールチップに表示するように変更。
  • StateLinkリルートノードの右クリックがスロット枠とノード枠で別扱いだったのを統合。
  • StateLinkをドラッグ中、そのStateLinkにマウスオーバーしている場合は自ステートに接続しないように変更。
  • BehaviourTreeのNodeLinkSlotのGUIスタイル変更。
  • デコレータの現在のコンディションを表示するように変更。
  • 挙動挿入ボタンを押した時の挙動選択ポップアップの表示位置を調整
  • 接続線をマウスオーバーした時に前面表示するように変更。
  • 型指定ポップアップでNoneを指定できるように変更。
  • 型指定ポップアップウィンドウを方向キーで選択変更できるように対応。
  • ParameterReferenceで参照するParameterContainerをデータスロットからも指定できるように変更。
  • その他の型のデータの接続線の色を調整。

BehaviourTree

  • ノードアクティブ時にDecoratorが失敗を返した場合はActionBehaviourやServiceのOnStart()は呼び出さないように変更。

組み込みStateBehaviour

  • InstantiateGameObjectのPrefabをFlexibleComponentに変更。
  • SubStateMachineReferenceのExternal FSMをFlexibleComponentに変更。
  • SubBehaviourTreeReferenceのExternal BTをFlexibleComponentに変更。

組み込みActionBehaviour

  • InstantiateGameObjectのPrefabをFlexibleComponentに変更。
  • SubStateMachineReferenceのExternal FSMをFlexibleComponentに変更。
  • SubBehaviourTreeReferenceのExternal BTをFlexibleComponentに変更。

最適化

Arbor Editor

  • Reflectionを使用していたところをdelegateを介すようにして高速化。

ArborFSM

  • StateLinkを事前にキャッシュするように変更。

スクリプト

  • EachFieldクラスを使用した際にフィールドをキャッシュして高速化。
  • EachFieldクラスでReflectionを使用していたところをdelegateを介すようにして高速化(AOTやIL2CPP環境では変更なし)。

廃止

スクリプト

  • ArborFSMInternalのnextStateプロパティを廃止。
    (代わりにreserverdStateを追加)
  • ClassTypeReferenceのTidyAssemblyTypeNameメソッドを廃止。
    (代わりにTypeUtility.TidyAssemblyTypeNameを追加)
  • ClassTypeReferenceのGetAssemblyTypeメソッドを配置。
    (代わりにTypeUtility.GetAssemblyTypeを追加)

修正

Arbor Editor

  • SubStateMachineReferenceやSubBehaviourTreeReferenceでインスタンス化したグラフをHierarchyで選択した場合にArbor Editorの選択も切り替わるように修正。
  • Arbor.StateLinkとは別のStateLinkという名前のクラスがあった場合、エディタ表示で例外が発生していたのを修正。
  • データスロットのリルートノード挿入をUndoすると接続が切れてしまっていたのを修正。
  • ドラッグ中の接続線の描画がRepaintイベント以外でも行われていたのを修正。

ArborFSM

  • OnStateBegin()内で同グラフのStop()を呼び出した場合の不具合
    • 例外が発生していたのを修正。
    • OnStateEnd()と次回実行時のOnStateBegin()が呼び出されなくなるのを修正。
    • 同ステートの次以降のOnStateBegin()が呼び出されていたのを修正。
  • SubStateMachineReferenceでインスタンス化されている場合に、編集すると問題のある項目をInspectorに表示しないように修正。
  • Inspectorにて「Copy Component」を行った際、SubStateMachineなどによる子グラフで使用しているNodeBehaviourが余分にコピーされてしまうのを修正。

BehaviourTree

  • SubBehaviourTreeReferenceでインスタンス化されている場合に、編集すると問題のある項目をInspectorに表示しないように修正。
  • Inspectorにて「Copy Component」を行った際、SubStateMachineなどによる子グラフで使用しているNodeBehaviourが余分にコピーされてしまうのを修正。

Waypoint

  • Transformを指定していないPointsの要素を削除すると、次の要素まで削除されてしまうのを修正。

スクリプト

  • EachField.Findにターゲットの配列を渡した時に取得できないのを修正。
  • EachField.Findにターゲットのインスタンスを渡した時は中身を走査しないように修正。
  • WeightList<T>の要素の型をUnityオブジェクトにした場合、オブジェクトを指定しない要素を削除しようとすると次の要素まで削除されてしまうのを修正。

その他

  • Unity2018.3.0b3に対応。

アセットストア

更新手順

Arborをアップデートする際は以下の手順に従ってください。

  1. 更新前に必ずプロジェクトのバックアップを取ってください。
  2. 既存のシーンを開いている場合は、メニューの「File / New Scene」からシーンを新規作成しておきます。
  3. Arbor Editorウィンドウを開いている場合は一旦閉じておきます。
  4. 既にインポートされているArborフォルダを削除。
  5. Arborの新バージョンをインポート。