博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity中为什么不能对transform.position.x直接赋值?
阅读量:1985 次
发布时间:2019-04-27

本文共 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无影响,显然这样做是没有意义的,所以编译器禁止你做这样的操作

转载地址:http://bvyvf.baihongyu.com/

你可能感兴趣的文章
【工具与环境】Excel中批量插入行
查看>>
【学习笔记】对vanilla的一些个人理解
查看>>
“学硕” VS “专硕”
查看>>
【NLP学习笔记】知识图谱阅读笔记及其心得
查看>>
【工具使用】新版CSDN-markdown编辑器使用指南
查看>>
《知识图谱》阅读笔记(六)
查看>>
【NLP学习笔记】中文分词(Word Segmentation,WS)
查看>>
【NLP学习笔记】词性标注(Part-of-speech Tagging, POS)
查看>>
【超越白皮书7】你需要知道关于ETH2.0的几个事实
查看>>
对于时间复杂度的通俗理解
查看>>
如何输入多组数据并输出每组数据的和?
查看>>
基于CentOS 7的Linux常用命令行命令
查看>>
行阶梯型矩阵
查看>>
matlab中uint8,double,im2double和im2uint8的区别
查看>>
SVM进行人脸检测
查看>>
C++学习笔记
查看>>
图像处理学习笔记
查看>>
Machine Learning Onramp on MATLAB 学习笔记
查看>>
Machine Learning with MATLAB 1.1 to 2.2
查看>>
Learning DSP with MATLAB
查看>>