一、分清组件(游戏对象)和变量(脚本成员)的区别
在Unity中组件其实就是一个类的实例,它属于游戏对象,一般可以直接添加在游戏对象上的功能都是组件,一般的脚本被我们写完也可以附加在游戏对象上,所以说脚本也算是组件。他们显示在Inspector属性查看器窗口上。
而很多组件在脚本中都有对应的脚本变量来代替,想通过脚本代码来时获得对应组件及其属性,就可以通过这些变量名来获得。
所以在脚本中通过访问组件和访问变量来获取组件的方法是不一样的。
首先最大的区别,就是变量都是小写,而组件开头是大写。
例如:
组件名称 | 变量名称 |
---|---|
Transform | transform |
Rigidbody | rigidbody |
Animation | animation |
Render | render |
等等。但是也有例外,比如Camera组件和Light组件,他们的变量名称和组件名称是一样的,因为他们的变量只对摄像机对象和光源对象有效。
二、组件和变量在脚本中的不同用法
如果通过访问变量就可以直接更改其属性,但是要通过组件进行修改,必须先调用GetComponent<组件名称>()的方法。
例如,同样是让物体进行位移,就有两种方式:
public class BNUComponent : MonoBehaviour {
void Update(){
transform.Translate(1, 0, 0); //直接修改对象transform变量的属性
GetComponent<Transform>().Translate(1, 0, 0); /*先访问对象的Transform组件,
再通过Translate方法进行变化*/
}
}