【Unity 3D】学习笔记二十四:unity游戏脚本(四)

本文介绍游戏开发中对象间的广播机制,包括向子对象、自身及父辈对象发送消息的方法。详细展示了使用BroadcastMessage, SendMessage及SendMessageUpwards等函数进行消息传递的过程。

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

在开发中,游戏对象是可以相互继承和派生的。从父对象到子对象之间继承的数量就是任意的,那么对象之间要相互交互信息怎么办?

游戏对象之间交互通常使用广播机制,写这篇学习笔记为了总结学习下游戏之间广播发送和接受。首先在场景中创建父对象“gameobject”,它分别派生cubeA0和cubeA1。

其中:

cubeA0的子对象是cubeB0,cubeB0的子对象是cubeC0。

cubeA1的子对象是cubeB1,cubeB1的子对象是cubeC1。


从图中可以看到,他们之间具有相互继承的关系,在这次例子中,将向这6个子对象绑定盒子的游戏脚本,用来接收与发送消息。

在游戏对象之间发送广播与消息可以分为3种:

  • 向子对象发送,发送至同辈对象或者子孙对象中。
  • 给自己发送,发给自身。
  • 向父辈对象发送,发送至对象的同辈或者父辈对象中。

A0的代码:

function Start () {
	
	//gameObject.BroadcastMessage ("ReceiveBroadcastMessage", "A0-----BroadcastMessage()");
	//gameObject.SendMessage ("ReceiveSendMessage", "A0-----SendMessage()");
	gameObject.SendMessageUpwards ("ReceiveSendMessage", "A0-----SendMessageUpwards()");
	
}

function ReceiveBroadcastMessage(str : String){
	Debug.Log("A0----Receive" +str);
}
function ReceiveSendMessage(str : String){
	Debug.Log("A0----Receive" +str);
}
function ReceiveSendMessageUpwards (str : String){
	Debug.Log("A0----Receive"  +str);
}

B0的代码:

function Start () {
	
	//gameObject.BroadcastMessage ("ReceiveBroadcastMessage", "B0-----BroadcastMessage()");
	//gameObject.SendMessage ("ReceiveSendMessage", "B0-----SendMessage()");
	gameObject.SendMessageUpwards ("ReceiveSendMessage", "B0-----SendMessageUpwards()");
	
}

function ReceiveBroadcastMessage(str : String){
	Debug.Log("B0----Receive" +str);
}
function ReceiveSendMessage(str : String){
	Debug.Log("B0----Receive" +str);
}
function ReceiveSendMessageUpwards (str : String){
	Debug.Log("B0----Receive" +str);
}

C0,A1,B1,C1的代码如上面代码,只需要修改**就行。
Debug.Log("**----Receive" +str);


运行结果:



从上述代码可知,发送消息的方法SendMessageUpwards()都有两个参数,第一个为接受消息的方法名称,第二个为object类型对象,可将任意类型作为参数附加在消息中。

但在实际中,貌似用的最多的是SendMessage()方法,通过游戏对象可直接调用该方法,返回消息后,该对象身上绑定的所有脚本都可以接收到这个消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值