当前位置: 首页 > news >正文

【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中以上的方法只是最基本的通信方法,除此之外,还有多种不同的通信方式,我们将在后面的文章中进行介绍。


http://www.mrgr.cn/news/10445.html

相关文章:

  • 串口和RS485通信
  • 2024Android面试题与答案(1)
  • Shader 中的渲染顺序
  • 数学基础 -- 线性代数之增广矩阵
  • 快速排序与其例题
  • stm32智能颜色送餐小车(红外光管避障)
  • python如何调用另一个文件中的函数
  • 使用kafka改造分布式事务
  • 一文搞定MybatisPlus
  • asio之task_io_service多线程
  • [Linux]如何在虚拟机安装Ubuntu?(小白向)
  • Java获取List实体交集差集
  • docker inspect输出内容详解,推测容器运行命令
  • 【案例59】WebSphere类加载跟踪开启方法
  • 吴恩达谈AI未来:Agentic Workflow、推理成本下降与开源的优势
  • 【Kotlin设计模式】Kotlin实现工厂模式
  • Python-断点续传的方式下载GPM降水数据
  • 企业高性能web服务器知识点合集
  • [指南]微软发布Windows-Linux双系统无法启动的完整修复方案
  • 可变参数模板(C++11)