メソッドをつなげて連続実行する
メソッドチェーン(メソッドの数珠繋ぎ)を使って、複数のメソッドを実行することができます
移動サンプル
シーンの構成
MethodChainとしてプロジェクトを作成します
このサンプルを実行すると、Cubeが上に移動(Y軸)→右に移動(X軸)→右に移動(X軸)の動きをします
スタート時点では座標は(0, 0, 0)なので(0, 1, 0)→(1, 1, 0)→(2, 1, 0)になります
瞬間的な移動なので最後の(2, 1, 0)がコード終了後の位置になります
コード
Cube移動コード
3つのメソッドを繋いでいます
using UnityEngine;
[RequireComponent(typeof(TransChain))]
public class Move : MonoBehaviour
{
void Start()
{
TransChain transChain = GetComponent<TransChain>();
transChain.MoveTo(Vector3.up)
.MoveTo(Vector3.right)
.MoveTo(Vector3.right);
}
}
.(ドット)で接続しています
このコードは、次のようなコードをつなげた形のなります
戻り値の型がどれもTranChainなので、繋げることができます
インテリセンスでインラインへ変更すると上記のようになります
TranChain tc1 = transChain.MoveTo(Vector3.up);
TranChain tc2 = tc1.MoveTo(Vector3.right);
tc2.MoveTo(Vector3.right);
メソッドチェーン用のコード
メソッドチェーンの実現用コードになります
特徴は、戻り値の型をインスタンスにしていることです
using UnityEngine;
class TransChain : MonoBehaviour
{
public TransChain MoveTo(Vector3 vector3)
{
transform.Translate(vector3);
return this;
}
}
参考
別記事もあります(ただし、むずいですよ)
ディスカッション
コメント一覧
まだ、コメントがありません