Unity3d脚本编程_

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方法有两个重载版本,可以直接通过方法名调用,或者给与传递值调用含有参数的方法;

注意点:另若脚本里有方法名相同,一个带有参数,另一个不带参数,那么当调用含参数的方法时,总无法调用成功。不知道是不是限制......

 

posted @ 2018-07-23 18:04  icon_sunny  阅读(620)  评论(0编辑  收藏  举报