SendMessage效率不高,因为每次调用的时候都会去遍历检测自身或者子节点上要调用的方法。

一、方法

GameObject自身的Script

SendMessage("函数名", 参数,SendMessageOptions)

自身和子Object的Script
BroadcastMessage("函数名", 参数,SendMessageOptions)
自身和父Object的Script
SendMessageUpwards("函数名", 参数,SendMessageOptions)
可以跨语言的,例如Javascript可以调用C#的函数
二、第三个参数使用
如果没有找到相应函数,会报错(默认是这个状态)
SendMessageOptions.RequireReceiver
没有找到相应函数,也不会报错,自动忽略
SendMessageOptions.DontRequireReceiver
 
三、测试代码 
  1. using UnityEngine;
  2. using System.Collections;
  3. public class TestSendMassage : MonoBehaviour {
  4. void Start () {
  5. //this.gameObject.BroadcastMessage("sendMsg", SendMessageOptions.DontRequireReceiver);
  6. //this.gameObject.SendMessageUpwards("sendMsg", SendMessageOptions.DontRequireReceiver);
  7. this.gameObject.SendMessage("sendMsg", SendMessageOptions.DontRequireReceiver);
  8. }
  9. // Update is called once per frame
  10. void sendMsg() {
  11. Debug.Log("sendMsg");
  12. }
  13. }
  1. using UnityEngine;
  2. using System.Collections;
  3. //该脚本依次挂载在TestSendMassage脚本所挂节点的父节点或者子节点上
  4. public class TestMsg : MonoBehaviour {
  5. void sendMsg()
  6. {
  7. Debug.Log("sendMsg1");
  8. }
  9. }

Unity3D——SendMessage方法的使用的更多相关文章

  1. Unity SendMessage方法

    我们今天研究下SendMessage方法, 如果我们需要执行某一个组件的方法时候可以使用SendMessage gameObject.SendMessage("A"); 即可通知当 ...

  2. Unity的SendMessage方法

    用法(该对象所有脚本都能收到): gameObject.SendMessage("要执行的方法名"); 通知的另一种实现: gameObject.GetComponent<脚 ...

  3. 关于C#.WinForm 与 WinApi的SendMessage 方法

    介绍: Windows Api 的 SendMessage 该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而和函数PostMessage不同,P ...

  4. unity3d InverseTransformPoint方法

    从歪果仁的脚本里看到了这个方法,查脚本,看脚本说明也没看懂,官方的说明是,变换位置从世界坐标到自身坐标,Transform.TransformPoint相反. 试验了一下得出这个结论,如果某一个物体A ...

  5. 怎么规划一个零基础学习Unity3D的“方法”或者“流程”?

    具体出处:https://www.zhihu.com/question/35542990 我只是一个计算机相关专业毕业的,已经掌握了基础的C#并开发过.net的.目前突然心血来潮对unity3D有兴趣 ...

  6. Unity3d工具方法小集

    1.获取垂直水平方向上的输入: float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = I ...

  7. WP8:Unity3D之间的值传递

    在前面的讨论中,我们介绍了如何在Unity3D for WP8中使用高于.Net 3.5的第三方库,传送门:http://www.cnblogs.com/zhxilin/p/3311240.html ...

  8. Unity3D 将 Unity 嵌入WPF中的一些研究笔记

     一. 在 WPF 中使用 WebBrowser,直接打开 WebPlayer.html 以这种方式有一个问题是. 无法在 WebBrowser 的上面 放置其它的控件, 在运行时,都不会显示 . 以 ...

  9. 转 [教程] Unity3D中角色的动画脚本的编写(二)

              在上一篇,我们介绍了有关Animation这个类中的部分方法,我后来想了想,这么介绍也不是个办法(其实有些方法我自己也没用过),该介绍点实际的东西了,毕竟我们是要做东西出来的.那好 ...

随机推荐

  1. 兼容IE FF 获取鼠标位置

    由于Firefox和IE等浏览器之间对js解释的方式不一样,firefox下面获取鼠标位置不能够直接使用clientX来获取.网上说的一般都是触发mousemove事件才行.我这里有两段代码,思路都一 ...

  2. jdk8 lambda表达式总结

    Java8 lambda表达式10个示例   1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnab ...

  3. java 重新抛出异常

    一.有时希望把刚捕获的异常重新抛出,尤其时在使用Exception捕获所以异常的时候,既然已经得到了对当前异常对象的引用,可以重新把它抛出: catch(Exception e){ System.ou ...

  4. k8s的imagePullSecrets如何生成及使用

    如果公司的docker仓库(harbor),需要用户认证之后,才能拉取镜像. 那如何在k8s里生成这个secret呢? 这个secret如何还原呢? 在k8s的yaml文件里如何实现呢? 这里提供几个 ...

  5. 【LOJ】#2186. 「SDOI2015」道路修建

    题解 就是线段树维护一下转移矩阵 分成两种情况,一种是前面有两个联通块,一种是前面有一个联通块 从一个联通块转移到一个联通块 也就是新加一列的三个边选其中两条即可 从一个联通块转移到两个联通块 不连竖 ...

  6. Android导入依赖appcompat-v7报错

    Android导入依赖appcompat-v7报错   导入appcompat-v7时报错了 导入的是implementation 'com.android.support:appcompat-v7: ...

  7. 003.SSH密钥对登陆

    一 需求背景 master:172.24.8.30 client-01:172.24.8.31 client-01:172.24.8.32 client-01:172.24.8.33 在master上 ...

  8. CentOS 7下升级MySQL5.7.23的一个坑

    发现CentOS 7下升级MySQL5.7.23的一个坑,以前面升级到MySQL 5.7.23的一个集群为例 在我们环境下打开文件描述符个数的参数open_files_limit在MySQL 5.6. ...

  9. 以管理员身份运行CMD

    To complete these procedures, you must be a member of the Administrators group. To start a command p ...

  10. web前端面试经历分享

    十天前,我还在纠结这个暑假到底是呆在实验室研究技术好还是找一份实习见识世面好,而现在我已经接到offer准备工作了.这几天真是累得够呛,一方面需要拼命准备期末考试,另一方面,需要往公司里面跑接受面试. ...