举个栗子,来说明一下
用报纸发布新闻:印有同一新闻的报纸有很多张拷贝,其中自己手中的内容被改动了不会影响别人的,这是值类型。
用网页URL来发布新闻:服务器改了内容大家看到的都会改变,这是引用类型。
类型不明会出现的问题
以下代码企图改变gameobject位置但失败了:
// 错误
Vector3 pos = transform.position;
pos = new Vector3(0,2,0);
// 正确
Transform trans = transform;
tran.position = new Vector3(0,2,0);
原因:值类型和引用类型行为不同,pos = new Vector3(0,2,0)只是改变了拷贝(因为Vector3是值类型)。
值(value)类型
Unity中的vector3、quaternion是structs,它们是值。
引用(feference)类型
Unity中的transform、gameobject是classes它们是引用。
哪些是值?哪些是引用?
0. int float bool