直接调用position.Set会发现没有用。其实和其本身是结构体有关,要当成一个值类型来看待,因为他全部是在栈中。
transform.position.Set(,,);
改成这样即可:
var tmp = transform.position;
tmp.Set(, , );
transform.position = tmp;
结构体在集合中的操作也是一样:
vec3Arr = new List<Vector3>();
vec3Arr.Add(new Vector3());
//位置不会改变.
vec3Arr[].Set(, , );
transform.position = vec3Arr[];
//正确做法
var tmp = vec3Arr[];
tmp.Set(, , );
vec3Arr[] = tmp;
不过真的想吐槽Unity的Set居然不返回自身。。更好的方法是做成一个扩展
public static Vector3 Return(this Vector3 v, float newX, float newY, float newZ)
{
v.Set(newX, newY, newZ);
return v;
}
transform.position = transform.position.Return(, , );