UnityEngine.Component引入了新的成员,如下:
新引入的成员 | 作用 | |
字段 | gameObject | 该组件所在的游戏对象 |
字段 | tag | 游戏对象的标签 |
字段 | transform | 添加到该游戏对象上的Transform组件 |
公共方法有,
- 1、BroadcastMessage: 调用该组件所在的游戏对象以及子对象身上所有Monobehaviour中定义的叫做methodName的方法,其中methodName是BroadcastMessage的一个参数;
- 2、CompareTag:返回该游戏对象是否被标签标记
- 3、GetComponent:若对象身上有对应类型的组件,则返回一个对应的该类型的组件,否则为null
- 4、GetComponentInChildren:同上,限定条件为对象本身和其子对象
- 5、GetComponentInParent:同3,只不过条件为父对象
- 6、GetComponents:同3,或者所有该类型的组件,返回处理
- 7、GetComponentsInChildren:同6,只不过对象是子对象及其本身
- 8、GetComponentsInParent:同6,对象是本身和父对象
- 9、SendMessage:调用该组件所在的游戏对象身上所有Monobehaviour中定义的叫做methodName的方法,其中methodName是BroadcastMessage的一个参数;
- 10、SendMessageUpwards:调用该组件所在的游戏对象以及基类身上所有Monobehaviour中定义的叫做methodName的方法,其中methodName是BroadcastMessage的一个参数;
扩充下,BroadcastMessage的API:
举个栗子:在摄像机下建几个子对象,然后身上分别挂相同脚本(便于区分)
然后,脚本如下:挂在脚本后传入不同值,以便区分;
总结:
目标对象及其子孙对象上如果有接收方法,就会被执行
方法可以接收参数,也可以不接收参数
设置RequireReceiver,目标对象上必须有指定的接收方法,否则会报错
BroadcastMessage方法有两个重载版本,可以直接通过方法名调用,或者给与传递值调用含有参数的方法;
注意点:另若脚本里有方法名相同,一个带有参数,另一个不带参数,那么当调用含参数的方法时,总无法调用成功。不知道是不是限制......