Vector2, Vector3, Vector4, Vector2Int, Vector3Int にはインデクサーが定義されている
※ Color にもある
インデクサーとは下記のようなもので
public float this[int index] { get { switch (index) { case 0: return this.x; case 1: return this.y; default: throw new IndexOutOfRangeException("Invalid Vector2 index!"); } } set { switch (index) { case 0: this.x = value; break; case 1: this.y = value; break; default: throw new IndexOutOfRangeException("Invalid Vector2 index!"); } } }
instance[num] でアクセスすることができる
例えば y の値が欲しい際には instance[1] で取得できる
var vector3 = Vector3.zero; // x vector3[0]; // y vector3[1]; // z vector3[2];
利用例
x, y, zによって乗算する倍率変えたいときに利用できたりする
private static readonly Vector3 Value = new Vector3(1f, 1.5f, 2f); private Vector3 Calc(Vector3 src) { var ret = Vector3.zero; #if true // インデクサーを利用する場合 for (var i = 0; i < 3; i++) ret[i] = src[i] * Value[i]; #else // インデクサーを利用しない場合 ret.x = src.x * Value.x; ret.y = src.y * Value.y; ret.z = src.z * Value.z; #endif return ret; }