Unity中为什么不能对transform.position.x直接赋值?
发布日期:2021-06-30 19:58:43 浏览次数:2 分类:技术文章

本文共 646 字,大约阅读时间需要 2 分钟。

之前一直认为transform.position.x是只读的所以不能直接赋值,今天深究了一下,其实并不是这个原因

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

再定位到Transform类中,position是一个Vector3类型的属性,而Vector3是一个结构体,所以position是一个结构体,结构体是一个值类型,值类型在方法传递的时只传递值的副本

与下面的程序一个道理,值类型传值的时传递的只是副本

using System;class Test{    void Swap(int num1, int num2)    {        int temp = num1;        num1 = num2;        num2 = temp;    }    static void Main()    {        int a = 1;        int b = 2;        Test t = new Test();        t.Swap(a, b);        Console.WriteLine(a + " " + b);  //1 2    }}

也就是说当我们transform.position.x = 1时调用属性的Get方法得到position,但是这个position只是一个副本,对这个副本做的任何修改都对原position无影响,显然这样做是没有意义的,所以编译器禁止你做这样的操作

转载地址:https://liuhaowen.blog.csdn.net/article/details/88235941 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:值类型与引用类型
下一篇:游戏中常见的相机操作

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年05月01日 10时46分42秒