用C#实现的代码中,transform.positon的分量不能单独赋值修改,必须对position进行整体修改。这算是个常识,但是至于为什么却从来没有考虑过。
有人说是因为xyz分量是只读的。这样的解释纯属瞎猜。进入Vector3里面看一下就知道了,并不是只读的。
并且Js实现的代码中是允许单独修改transform.position的分量的。
做一组对照试验
PositionTest.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public struct MyVector
{
public float x, y, z;
}
public class ClassVector
{
public float x, y, z;
}
public class PositionTest : MonoBehaviour {
//-----------------对照1
Vector3 _posVector;
public Vector3 position_1
{
get
{
return _posVector;
}
set
{
_posVector = value;
}
}
public Vector3 GetPosition_1()
{
return _posVector;
}
//------------------对照1 end
//------------------对照2
MyVector _posMyVector;
public MyVector position_2
{
get