游戏对象之间发送和接收消息
2018-04-03 13:47
609 查看
1.创建一个游戏工程, 命名为SRMessageGo
2.在Project视图中创建3个文件夹, Scene文件夹、Resources文件夹和Script文件夹
3.将当前场景保存为GameScene
4.创建SendMessageSend、MessageToAncestor SendMessageToChildren和ReceiveAncestorMessage ReceiveChildrenMessage、ReceiveMessage游戏脚本
5.在Hierarchy视图中创建一个空的GameObject, 命名为GameManager, 在GameManager下创建一个Cube,并把SendMessage、ReceiveMessage、ReceiveChildrenMessage、SendMessageToChildren绑定在GameManager上, 把ReceiveAncestorMessage和MessageToAncestor绑定在Cube上
6.游戏对象发送消息的方法
(1).GameObject.SendMessage(string methodName,object value,SendMessageOptions option), 是向该游戏对象上的所有Monobehavior脚本发送消息。
(2).GameObject.BroadcastMessage(string methodName,object value,SendMessageOptions option), 是向该游戏对象以及子游戏对象上的所有Monobehavior脚本发送消息。
(3).GameObject.SendMessageUpwards(string methodName,object value,SendMessageOptions option), 是向该游戏对象以及祖游戏对象上的所有Monobehavior脚本发送消息。
(4).第一个参数是消息的名称, 游戏对象所有Monobehavior脚本里与该名称同名的方法将被调用。
(5).第二个参数是向该方法传递的参数。
(6).第三个参数是是否必须有接收方法, SendMessageOptions.DontRequireReceiver不要求必须有接收方法, SendMessageOptions.RequireReceiver必须有接收方法, 没有报错。
7.代码清单
2.在Project视图中创建3个文件夹, Scene文件夹、Resources文件夹和Script文件夹
3.将当前场景保存为GameScene
4.创建SendMessageSend、MessageToAncestor SendMessageToChildren和ReceiveAncestorMessage ReceiveChildrenMessage、ReceiveMessage游戏脚本
5.在Hierarchy视图中创建一个空的GameObject, 命名为GameManager, 在GameManager下创建一个Cube,并把SendMessage、ReceiveMessage、ReceiveChildrenMessage、SendMessageToChildren绑定在GameManager上, 把ReceiveAncestorMessage和MessageToAncestor绑定在Cube上
6.游戏对象发送消息的方法
(1).GameObject.SendMessage(string methodName,object value,SendMessageOptions option), 是向该游戏对象上的所有Monobehavior脚本发送消息。
(2).GameObject.BroadcastMessage(string methodName,object value,SendMessageOptions option), 是向该游戏对象以及子游戏对象上的所有Monobehavior脚本发送消息。
(3).GameObject.SendMessageUpwards(string methodName,object value,SendMessageOptions option), 是向该游戏对象以及祖游戏对象上的所有Monobehavior脚本发送消息。
(4).第一个参数是消息的名称, 游戏对象所有Monobehavior脚本里与该名称同名的方法将被调用。
(5).第二个参数是向该方法传递的参数。
(6).第三个参数是是否必须有接收方法, SendMessageOptions.DontRequireReceiver不要求必须有接收方法, SendMessageOptions.RequireReceiver必须有接收方法, 没有报错。
7.代码清单
using UnityEngine; public class SendMessageToChildren : MonoBehaviour { // send to children addCoin message void Awake() { gameObject.BroadcastMessage("addCoin", 1000, SendMessageOptions.DontRequireReceiver); } } using UnityEngine; public class ReceiveAncestorMessage : MonoBehaviour { // receive ancestor addCoin message void addCoin(int count) { Debug.Log ("add " + count + " coin"); } } using UnityEngine; public class SendMessageToAncestor : MonoBehaviour { // send to ancestor addCoinOver message void Start () { gameObject.SendMessageUpwards ("addCoinOver", SendMessageOptions.DontRequireReceiver); } } using UnityEngine; public class ReceiveChildrenMessage : MonoBehaviour { // receive children addCoinOver message void addCoinOver () { Debug.Log ("receive children addCoinOver message"); } } a510 using UnityEngine; public class SendMessage : MonoBehaviour { private bool hasFirstUpdate = false; // send UseCoin message void Update () { if (!hasFirstUpdate) { hasFirstUpdate = true; gameObject.SendMessage ("UseCoin", SendMessageOptions.DontRequireReceiver); } } } using UnityEngine; public class ReceiveMessage : MonoBehaviour { // receive use coin message void UseCoin() { Debug.Log ("receive use coin message"); } }8.运行游戏
相关文章推荐
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
- 简单演示不同对象间的消息发送和接收(广播消息中心)
- linux 系统之间,网络编程,消息发送与接收
- ActiveMQ服务器之间传输对象,项目A发送对象到项目B接收发送对象《一》
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(转)
- ActiveMQ服务器之间传输对象,项目A发送对象到项目B接收发送对象《二》
- SpringBoot的RabbitMQ消息队列: 一、消息发送接收第一印象
- 微信公众平台开发学习记录(3)————接收消息和发送回复消息
- openfire4.2.1 + smack4.2.2即时通信工具开发(android端登录、发送消息、接收消息)
- < Unity 3D专栏 >实现游戏对象与对象之间通信
- XMPP系列(四)---发送和接收文字消息,获取历史消息功能
- OC向一个已经释放的对象发送消息会怎样
- activemq安装与简单消息发送接收实例
- rabbitmq一---一对一发送及接收消息
- TCP服务器,实现client发送消息,server接收消息
- JMS五种消息的发送/接收的例子
- Android 基于Netty的消息推送方案之字符串的接收和发送(三)
- 微信通过openID发送消息/后台post、get提交并接收数据