Vector3を複製する

(2019/07/23 更新) · 開発メモ

Vector3を複製しましょう。

複製する必要が無いケース

Transform.positionから値を取得する場合はVector3を複製する必要はありません。

Vector3 v1 = transform.position;
Vector3 v2 = transform.position;
v1.x = 100;
print(v1);
print(v2);
//v1とv2のxの値は異なる

Transform.positionから値を取得する際は、新たにインスタンスを生成して渡してくれるので、そもそもVector3を複製する必要はありません。

複製したい場合

拡張メソッドでClone関数を作りましょう。

public static class Extend
{
    public static Vector3 Clone(this Vector3 vec)
    {
        return new Vector3(vec.x, vec.y, vec.z);
    }
}

使う際は下のようなかんじで使います

void sample(Vector3 vec)
{
    Vector3 tmp=vec.Clone();
}

以上です。コピーして使ってください。