【Unity基础】Unity通信之SendMessage

在Unityk ,“SendMessage”、“SendMessageUpwards”和“BroadcastMessage"是三种用于消息传递的方法,它们允许脚本对象在不直接引用其他脚本的情况下相互通信。以下是它们的具体功能:

  1. SendMessage
  • 功能:SendMessage方法用于将消息发送到当前对象(GameObject)上的所有组件。

  • 用法:SendMessage(”方法名“,参数,SendMessageOptions)

    • 方法名:要调用 的方法的名字。
    • 参数:可选参数,可以是任意类型,也可以不提供。
    • SendMessageOptions:可选项,用于指定当消息接收方不存在该方法时的行为 。可选择”RequireReceiver"(如果接收方没有定义该方法,则抛出错误)或“DontRequireReceiver"(忽略未定义的方法)。
  • 示例

    gameObject.SendMessage("ApplyDamage", 10);
    

    这个例子将调用当前GameObject上所有组件中的ApplyDamage方法,并传递参数10。

  1. SendMessageUpwards
  • 功能:SendMessageUpwards类似于SendMessage,但它不仅会在当前对象是调用该方法,还会沿着层级(Hierarchy)向上递归调用父对象及其所有组件上的同名方法。
  • 用法:SendMessageUpwards(“方法名”,参数,SendMessageOptions)
  • 示例
    gameObject.SendMessageUpwards("ApplyDamage", 10);
    
    这个例子将调用当前GameObject及其父对象上所有组件中的ApplyDamage方法,并传递参数10。
  1. BroadcastMessage
  • 功能:BroadcastMessage将消息广播给当前对象及其所有子对象 (包括子对象的子对象),调用它们所有组件中的同名方法。
  • 用法:BroadcastMessage(“方法名”,参数,SendMessageOptions)
  • 示例
    gameObject.BroadcastMessage("ApplyDamage", 10);
    

这个例子将调用当前GameObject及其所有子对象上所有组件中的ApplyDamage方法,并传递参数10。

总结

  • SendMessage: 在当前GameObject上的所有组件中调用指定方法。
  • SendMessageUpwards:在当前GameObject及其父对象上的所有组件中调用指定方法。
  • BroadcastMessage:在当前GameObject及其子对象上的所有组件中调用指定方法。

这三种方法的一个共同点是,它们允许脚本之间进行解耦的通信,使得一个脚本不需要直接引用另一个脚本即可触发其方法。

当然,在Unity中以上的方法只是最基本的通信方法,除此之外,还有多种不同的通信方式,我们将在后面的文章中进行介绍。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tealcwu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值