メンバー呼び出し

任意の型のメンバーを呼び出す方法について説明します。

ここでは例としてArborFSMでの使用を想定して解説します。

InvokeMethod

メソッドの呼び出しや、フィールドやプロパティに値を設定します。

リファレンス : InvokeMethod

InvokeMethodの追加

  • ステートの歯車アイコンをクリックし「挙動追加」を選択。
  • 「Events / InvokeMethod」を選択。

InvokeMethodの設定

  • 「Add New Event Type」ボタンをクリックし、呼び出したいタイミングを選択。
  • イベントの「+」アイコンをクリックしてメンバー呼び出しデータを追加。
  • 呼び出したい型とメンバーを設定。
  • <Target>を設定。
    • UnityオブジェクトであればFlexibleFieldで設定可能。
    • それ以外の型の場合はデータフローからの入力により受付。
    • staticメンバーの場合は設定項目なし。
  • 引数の値を設定。

GetValue演算ノード

フィールドやプロパティの値を取得し、データフローに出力します。

リファレンス : GetValue

GetValueの追加

  • グラフ上を右クリックし、「演算ノード作成」を選択。
  • 「Events / GetValue」を選択。

GetValueの設定

  • 型とメンバーを設定。
  • <Target>を設定。
    • UnityオブジェクトであればFlexibleFieldで設定可能。
    • それ以外の型の場合はデータフローからの入力により受付。
    • staticメンバーの場合は設定項目なし。
  • 値の出力スロットを接続。

リファクタリング

呼び出す型やメンバーの名前を変更したい場合、RenamedFrom属性を使用して新しい名前を以前の名前と関連付けすることで、参照切れを防げます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
using UnityEngine;
using Arbor;

[RenamedFrom("Player")]
public class Character : MonoBehaviour
{
	[RenamedFrom("TakeDamage")]
	public void InflictDamage(int damage)
	{
		// ...
	}
}

以前の名前には名前空間を含める必要があります。
上記の例などグローバル名前空間に定義している場合は必要ありません。

マネージコードストリッピング

メンバー呼び出しはReflectionを使用して呼び出しているため、マネージコードストリッピングの設定によって呼び出し先メンバーが未使用コードとして削除されてしまう可能性があります。

Preserve属性やlink.xmlファイルを設定して呼び出し先コードが削除されないように設定してください。

詳しくは、Unityマニュアルのマネージコードストリッピングを参照してください。