作用:传递信息
broadcastMessage 可以向该脚本所挂物体和该物体的子物体(子物体的子物体……)发送另一脚本的指定方法(只有该物体和其子物体上有另一脚本);
sendMessage 同一对象的不同脚本间互通消息,即使是私有方法也可以;name就是可以传递的参数
sendmessageUpwards 可以向该脚本所挂物体和该物体的父物体(父物体的父物体……)发送另一脚本的指定方法(只要该物体和其父物体上有另一脚本)
参数:(“方法名”,传递的信息,传递的方式)
参数:(“method”,name,SendMessageOptions.RequireReceiver);
传递的方式:
SendMessageOptions.RequireReceiver需要接受者,就是说方法method1必须要存在,不然就会报错;
SendMessageOptions.DontRequireReceiver不需要接收者。方法不存在也不报错
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class testTwo : MonoBehaviour {
string name = "king";
// Use this for initialization
void Start ()
{
// transform.SendMessage("method",name,SendMessageOptions.RequireReceiver);
transform.BroadcastMessage("method",name,SendMessageOptions.DontRequireReceiver);
transform.SendMessageUpwards("method",name,SendMessageOptions.DontRequireReceiver);
transform.SendMessage("method2",name,SendMessageOptions.DontRequireReceiver);
//在检测射线碰撞时也可以使用此方法,调用与射线碰撞的游戏物体身上的某一脚本的指定方法
//hit.collider.SendMessage("method",SendMessageOptions.DontRequireReceiver);
}
void method(string a)
{
print(a);
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class testThree : MonoBehaviour {
private void method() //不同脚本之间调用,sendmessage() 私有方法也可以被调用
{
print(21);
}
}