メソッドをつなげて連続実行する

メソッドチェーン(メソッドの数珠繋ぎ)を使って、複数のメソッドを実行することができます

移動サンプル

シーンの構成

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;
    }
}

参考

別記事もあります(ただし、むずいですよ)

C#,Unity

Posted by hidepon