unity,引用类型
什么时候用到过引用类型?
把一个游戏物体从层级窗口拖到右侧的Inspector窗口的某个属性中时,就是用的引用类型。

代码
/**
* 移动速度
*/
[Tooltip("移动速度")]
public float moveSpeed=3;
/**
* 目标物体(请将目标物体拖到Inspector窗口的Target Object属性)
*/
[Tooltip("目标物体")]
public GameObject targetObject;
// Start is called before the first frame update
void Start()
{
//GameObject flag = GameObject.Find("红旗");//找到目标物体
//this.transform.LookAt(flag.transform);//脸转过来对着这个位置
this.transform.LookAt(targetObject.transform);//脸转过来对着这个位置
}
// Update is called once per frame
void Update()
{
float distance = moveSpeed * Time.deltaTime;
transform.Translate(0, 0, distance, Space.Self); //相对于自身坐标系,即本地坐标系
}
运行效果
图中所示,第一次运行,没有指定目标物体,第二次运行时,把红旗拖动到了Target Object属性中

引用类型可以引用哪些类型
参数也可以是引用类型
节点,GameObject
组件,如 Transform、MeshRenderer 、AudioSource资源 ,如 Material 、Texture I AudioClip 、...
数组类型
视频教程
https://www.bilibili.com/video/BV1TZ4y1o76s?p=63&vd_source=1e7fe4cf32e0dc77c402668041d23eff
上面的代码与视频中不一样,下面是与视频中一致的代码
下面的代码,如果不在一开始拖动目标到Target Object,则会报错,原因是update中的代码用到了这个对象(start中的this.transform.LookAt(targetObject.transform);不报错,原因不明)
/**
* 移动速度
*/
[Tooltip("移动速度")]
public float moveSpeed=3;
/**
* 目标物体(请将目标物体拖到Inspector窗口的Target Object属性)
*/
[Tooltip("目标物体")]
public GameObject targetObject;
// Start is called before the first frame update
void Start()
{
//GameObject flag = GameObject.Find("红旗");//找到目标物体
//this.transform.LookAt(flag.transform);//脸转过来对着这个位置
this.transform.LookAt(targetObject.transform);//脸转过来对着这个位置
}
// Update is called once per frame
void Update()
{
//float distance = moveSpeed * Time.deltaTime;
//transform.Translate(0, 0, distance, Space.Self); //相对于自身坐标系,即本地坐标系
Vector3 pl = this.transform.position; //自身的位置
Vector3 p2 = targetObject.transform.position;//目标的位置
Vector3 p = p2 - pl;
float distance = p.magnitude;//向量的长度,即求距离
if (distance >0.3f)
{
float move = moveSpeed * Time.deltaTime;
transform.Translate(0, 0, move, Space.Self); //相对于自身坐标系,即本地坐标系
}
}

浙公网安备 33010602011771号