演算ノード
演算ノードをカスタマイズするには、演算ノード用のスクリプトファイルを作成し、行いたい処理を記述する必要があります。
Calculatorスクリプトファイルの作成
- Projectウィンドウから作成したい場所で右クリック。
- 右クリックメニューから、「Create > Arbor > Calculator C# Script」を選択。
- ファイル名を入力して決定
呼び出される関数
作成したCalculatorをArborEditorにて演算ノードに割り当てると、スクリプトの各関数が呼び出されるようになります。
- OnCalculate
演算が必要な際に呼ばれます。
ここで演算処理を記述し、OutputSlot.SetValueにてデータを出力してください。 - OnCheckDirty
再演算が必要かどうかの判定に呼ばれます。必要に応じてoverrideしてください。
演算に必要なデータが変更されており再演算が必要かどうかを返してください。
入力スロットの接続状態による再演算はArborの内部的に判定しているため意識する必要はありません。
(Transform.positionなど、外部オブジェクトの値を取り扱う際にtrueを返すようにする必要があります) - MonoBehaviourのメッセージ関数
詳しくはUnity ScriptReferenceのMonoBehaviourのMessagesを参照してください。
演算の流れ
- 必要に応じてInputSlot.GetValue()を呼び出します(FlexibleFieldならvalueプロパティ経由)。
- 再演算が必要かどうかの判定にOnCheckDirtyが呼ばれます。
(ステートなどからOutputSlot.SetValueによって事前に値が変更されていた場合はOnCheckDirtyの結果にかかわらず再演算が行われます) - 再演算が必要な場合にOnCalculateが呼ばれます。
- OnCaluculateの中で必要に応じてInputSlot.GetValue()を呼び出します。
- 以下、再演算が必要なくなるまでInputSlotを辿って値を取得します。
フィールドとArbor Editor
基本はStateBehaviourのフィールドとArbor Editorと同じく、フィールドを宣言することでArbor Editorに表示され編集可能になります。
データフロー
演算ノードを活用するには、データフローによる値の入出力が重要です。
詳しくは、スクリプティング : データフローを参照してください。
補足説明
- ファイル名とクラス名が一致している必要があります。
- Editorフォルダなどの特殊フォルダ以下に配置すると認識されなくなります。
- 自動的に付与されるAddComponentMenu("")はInspectorのAdd Componentに表示されないようにするためのものです。
- グラフを介さずにGameObjectへ直接追加した場合の動作はサポートいたしません。
- C#スクリプトの変更を反映するにはコンパイルが必要です。
PreferencesのAuto Refreshをオフにしている場合などは手動でメニューの「Assets > Refresh」を行う必要があります。