unity 3种message消息管理使用

2024-06-09 14:48

本文主要是介绍unity 3种message消息管理使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在unit的Component类中,封装了3种消息发送处理机制,接下来一起看一下他们的使用方法

BroadcastMessage 广播消息

function BroadcastMessage (methodName : string, parameter : object = null, options : SendMessageOptions = SendMessageOptions.RequireReceiver) : void

描述
在游戏物体每一个MonoBehaviour和它的全部子物体上调用名为methodName的方法。
通俗的解释:BroadcastMessage朝物体和所有子物体发送消息。

对一个物体及其所有子物体,进行消息的广播,如果其中任何子物体上贴有脚本,而脚本中有相应的处理此消息的函数,则Invoke调用之。

接受消息的此方法(函数)可以通过设置没有引用参数表来忽略传过来的消息中的参数。如果选项Option中设置成了SendMessageOptions.RequireReceiver,那么当没有任何脚本组件接受此消息时,一个相应的错误会弹出来
C# JavaScript using UnityEngine;

using System.Collections;public class example : MonoBehaviour {void ApplyDamage(float damage) {print(damage);}public void Awake() {BroadcastMessage("ApplyDamage", 5.0F);}
}// Calls the function ApplyDamage with a value of 5
//调用函数 ApplyDamage 值为5
BroadcastMessage ("ApplyDamage", 5.0);// Every script attached to the game object and all its children
// that has a ApplyDamage function will be called.
//附加到游戏物体的每个脚本和全部的子物体,有一个ApplyDamage函数将被调用
function ApplyDamage (damage : float) {print (damage);
}

SendMessage 发送消息

function SendMessage (methodName : string, value : object = null, options : SendMessageOptions = SendMessageOptions.RequireReceiver) : void

描述
SendMessage朝本级别物体的多个脚本发送信息,也就是向当前对象挂载的所有脚本上面发送消息。
在游戏物体每一个MonoBehaviour上调用名为methodName的方法。

接受此消息的函数也可以没有参数。如果选项Option中设置成了SendMessageOptions.RequireReceiver,那么当没有任何脚本组件接受此消息时,一个相应的错误会弹出来

C# JavaScript using UnityEngine;

using System.Collections;public class example : MonoBehaviour {void ApplyDamage(float damage) {print(damage);}public void Awake() {SendMessage("ApplyDamage", 5.0F);}
}// Calls the function ApplyDamage with a value of 5
//调用函数ApplyDamage 值为5
SendMessage ("ApplyDamage", 5.0);// Every script attached to the game object
// that has a ApplyDamage function will be called.
//附加到游戏物体的每个脚本,有一个ApplyDamage函数将被调用
function ApplyDamage (damage : float) {
print (damage);
}

SendMessageUpwards 向上发送消息

function SendMessageUpwards (methodName : string, value : object = null, options : SendMessageOptions = SendMessageOptions.RequireReceiver) : void

Description描述
SendMessageUpwards朝物体和上级父物体发送信息。
在游戏物体每一个MonoBehaviour和每一个behaviour的祖先上调用名为methodName的方法。

接受此消息的函数也可以没有参数。如果选项Option中设置成了SendMessageOptions.RequireReceiver,那么当没有任何脚本组件接受此消息时,一个相应的错误会弹出来

C# JavaScript using UnityEngine;

using System.Collections;public class example : MonoBehaviour {void ApplyDamage(float damage) {print(damage);}public void Awake() {SendMessageUpwards("ApplyDamage", 5.0F);}
}// Calls the function ApplyDamage with a value of 5
//调用函数ApplyDamage 值为5
SendMessageUpwards ("ApplyDamage", 5.0);// Every script attached to the game object
// that has a ApplyDamage function will be called.
//附加到游戏物体的每个脚本,有一个ApplyDamage函数将被调用
function ApplyDamage (damage : float) {print (damage);
}

测试方法执行

在unity中创建脚本,一个用于发送消息,一个用于接收消息
脚本1 发送消息

using UnityEngine;
using System.Collections;public class xx1 : MonoBehaviour
{void OnGUI(){if (GUI.Button(new Rect(10, 10, 100, 50), "发送1")){//this gameobjecSendMessage("myTest");}if (GUI.Button(new Rect(10, 150, 100, 50), "发送2")){//this gameobjec and it's childsBroadcastMessage("myTest");}if (GUI.Button(new Rect(10, 200, 100, 50), "发送3")){//this gameobjec‘parent SendMessageUpwards("myTest");}}}

脚本2 接收消息

using UnityEngine;
using System.Collections;public class XXX : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}void OnDrag(Vector2 delta){Debug.Log("-------OnDrag--------");}public void myTest() {Debug.Log("this is a methord:"+gameObject.name);   }}

这里写图片描述

这里写图片描述

发送1按钮点击,sendMessage,运行结果

this is a methord:Plane1
也就是只有plane1 收到消息

发送2按钮点击,broadCaseMessage运行结果
这里写图片描述
发送3按钮点击,SendMessageUpwards运行结果

这里写图片描述

这篇关于unity 3种message消息管理使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045488

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的