Unity SendMessage方法

本文详细解析了SendMessage方法在Unity中的使用方式,包括如何通知组件执行特定方法及多参数传递技巧,并通过实例展示了如何在不同层级的组件间进行方法调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们今天研究下SendMessage方法, 如果我们需要执行某一个组件的方法时候可以使用SendMessage

 

gameObject.SendMessage("A");即可通知当前物体下某组件的A方法
gameObject.SendMessageUpwards("A");通知父物体某组件的A方法,直到查询到根结点结束

 

SendMassge如何传递多个参数:

using UnityEngine;
using System.Collections;
using System;

namespace PlateFace
{
    public class Test : MonoBehaviour
    {
     void Awake()
        {
            gameObject.SendMessage("OnShowInfo", new object[] { "盘子脸1号", "盘子脸2号" }
                        ,SendMessageOptions.RequireReceiver); }       
      
     //数据会传入到该方法当中,显示在控制台上面
void OnShowInfo (object [] obj) { Debug.Log(obj[0]); Debug.Log(obj[1]); } } }

 

GameObject.Find("MainCamera").SendMessage(“Z”),物体有两个A组件,两个Z方法. 使用SendMessage()按组件从上到下顺序查找,

如果找到Z方法并不会终止,继续往下面寻找然后执行全部的Z方法.

 

GameObject类:  (它是密封类不可被继承)   1个GameObject包含多个组件,包含多个子GameObject.是一种树形结构
  image

 

 

SendMessage的总结:
    1. SendMessage无法向子物体方法传播的
    2. 如果在当前物体组件集合没找到方法,报错
    3. SendMessage是同步运行
    4. 不管方法是什么权限都可以调用
    5. 如果子类有方法优先调用, 父类有方法后调用, 两个都没有方法报错
    6. SendMessage("A")该游戏物体每一个组件存在A这个方法都会被调用

转载于:https://www.cnblogs.com/plateFace/p/4381043.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值