文章摘自http://bbs.9ria.com/thread-256852-1-1.html べ枫叶枝_
1.GameObject.SendMessage方法的使用介绍。
在界面上创建2个Cube,Cube1和Cube2。分别为他们绑上SendMessage和ReceiveMessage。
我们简单的实现鼠标点击Cube1发送一个string给cube2的某个方法。
界面搭建我就不说怎么做的了,我只说代码部分。
界面效果:
在接受者的脚本里只需要写明一个函数,就行了。
- public void getMessage(string message){
- print ("i got a message:"+message);
- }
类如下:
- using UnityEngine;
- using System.Collections;
- public class ReceiveMessage : MonoBehaviour {
- // Use this for initialization
- void Start () {
-
- }
-
- // Update is called once per frame
- void Update () {
-
- }
-
- public void getMessage(string message){
- print ("i got a message:"+message);
- }
- }
然后处理,ReceiveMessage类了,他处理的只是鼠标MouseDown Cube1后使用SendMessage将信息发送出去。
找到Cube2组件:
- private GameObject cube2;
- void Start () {
- findGameObject();
- }
- void findGameObject(){
- cube2 = GameObject.Find("Cube2");
- }
处理MouseDown:
- void OnMouseDown(){
- if(!cube2){
- findGameObject();
- }else{
- string str = "cube1 has been clicked.";
- print(str);
- cube2.SendMessage("getMessage",str);
- }
- }
- using UnityEngine;
- using System.Collections;
- public class SendMessage : MonoBehaviour {
-
- private GameObject cube2;
-
- // Use this for initialization
- void Start () {
- findGameObject();
- }
- void findGameObject(){
- cube2 = GameObject.Find("Cube2");
- }
-
- // Update is called once per frame
- void Update () {
-
- }
- void OnMouseDown(){
- if(!cube2){
- findGameObject();
- }else{
- string str = "cube1 has been clicked.";
- print(str);
- cube2.SendMessage("getMessage",str);
- }
- }
-
- }
最后如图:
整个SendMessage就这么简单了。。。
当然在实际应用开发中要实际应用,这里只是简单的实现而已,而且实际中Unity的GameObject类里还提供了:SendMessageUpWards:向物体和父物体发送消息;
BroadCastMessage:对物体和所有子物体发送消息(广播消息)。