Unity中为什么不能对transform.position.x直接赋值?

之前一直认为transform.position.x是只读的所以不能直接赋值,今天深究了一下。


导航到Vector3类中
发现并没有对x,y,z进行读写限制,那为什么不能够赋值呢?

再导航到Transform类中
position是一个Vector3类型且是一个自动属性,而Vector3是一个结构体,所以position是一个结构体,结构体是一个值类型,值类型在方法传递的时只传递值的副本
也就是说当我们transform.position.x = 1时调用属性的Get方法得到position,但是这个position只是一个副本,对这个副本做的任何修改都对原position无影响,显然这样做是没有意义的,所以编译器禁止你做这样的操作。

猜你喜欢

转载自blog.csdn.net/LLLLL__/article/details/88235941