U3d中 SendMessage 和 BroadcastMessage 用法
注意:
1.接收函数不用public修饰
Message相关有3条指令:
要接收消息的GameObject.SendMessage ("函数名",参数,SendMessageOptions) //自身和父Object的Script
要接收消息的GameObject.BroadcastMessage ("函数名",参数,SendMessageOptions) //自身和子Object的Script
要接收消息的GameObject.SendMessageUpwards ("函数名",参数,SendMessageOptions) //自身和父Object的Script
第三个参数使用:
SendMessageOptions.RequireReceiver //如果没有找到相应函数,会报错(默认是这个状态)
SendMessageOptions.DontRequireReceiver //即使没有找到相应函数,也不会报错,自动忽略
/// <summary>
/// 向某个GameObject自身上的Script发送一条信息
/// </summary>
/// <param name="go">接收消息的GameObject</param>
/// <param name="func">接收消息的函数名称,不用public修饰</param>
/// <param name="param">要发送的参数</param>
/// <param name="isWarning">没有找到接收函数时,是否会报错</param>
void Send(GameObject go, string func, object param, bool isWarning=true)
{
SendMessageOptions options = isWarning==true ? SendMessageOptions.RequireReceiver : SendMessageOptions.DontRequireReceiver;
go.SendMessage(func,param,options);
}
//用SendMessage传递多个参数的方法,用object基类数组来传递
object[] objectArray =new object[2];//这里的2就是改成你要传递几个参数
objectArray[0]=true;
objectArray[1]=5f;
transform.parent.SendMessage("OnEquipClick",objectArray);