< Unity 3D专栏 >实现游戏对象与对象之间通信

游戏中,对象与对象之间需要交流,实现的方法多种,例如:可定义静态变量,其他脚本直接调用, 也可用到: SendMessage

今天主要学习SendMessage的用法。

1、创建两个脚本:“Cube0”和“Cube1”;

2、将两个脚本分别拖拽到Cube0和Cube1对象中;

3、修改Main.cs脚本:

using UnityEngine;
using System.Collections;

public class Main : MonoBehaviour 
{
	
	//定义全局游戏对象
	GameObject obj0;
	GameObject obj1;
	
	void Start ()
	{
		//获取两个游戏对象
		obj0 = GameObject.Find("Cube0");
		obj1 = GameObject.Find("Cube1");
	}
	
	
	
	void OnGUI() 
	{
		if(GUILayout.Button("Move0"))
			{
				//告诉Cube0对象,发送一个方法
				//Receive是方法名称,My Code是参数;绑定的obj0对象脚本中需要有一个Receive方法接收参数
				obj0.SendMessage("ReceiveCube","My Cube0");
				obj1.SendMessage("ReceiveCube","My Cube1");
			}
		
	}

	
	void Update () 
	{
		
	}
}


设置Cube0 和 Cube1 脚本:

Cube0脚本:

using UnityEngine;
using System.Collections;

public class Cube0 : MonoBehaviour 
{
	//ReceiveCube方法,接收Main.cs传过来的参数
	void ReceiveCube(string str)
	{
		Debug.Log(str);
	}	
	
}

Cube1脚本:

using UnityEngine;
using System.Collections;

public class Cube1 : MonoBehaviour 
{
	//ReceiveCube方法,接收Main.cs传过来的参数
	void ReceiveCube(string str)
	{
		Debug.Log(str);
	}
	
}


效果可见:


 

原文地址:https://www.cnblogs.com/Terrain/p/3276620.html