一、对象之间发送消息
有时候在游戏场景中游戏对象与游戏对象之间需要相互通信以实现对象之间的互动,在GameObject类有一个方法实现了对象与对象之间的通信。
SendMessage(string methodName, //指定接受消息的对象的脚本中一个叫mentodName的函数处理这个函数
[DefaultValue("null")] object value, //发送的消息参数
[DefaultValue("SendMessageOptions.RequireReceiver")] SendMessageOptions options);//设置接受消息的对象是否必须接受消息
列如:
//发送消息对象绑定的的脚本组件
using UnityEngine;
using System.Collections;
public class SeddMesssage : MonoBehaviour {
//定义接受消息的对象
private GameObject reciver;
void Start () {
reciver = GameObject.FindGameObjectWithTag("123");
//向接受消息的对象发送一个消息
reciver.SendMessage("Messagr", 1000, SendMessageOptions.DontRequireReceiver);
}
}
//接受消息对象绑定的脚本
using UnityEngine;
using System.Collections;
public class Cubel : MonoBehaviour {
void Messagr(int mun)
{
Debug.Log("接收到的消息为 " + mun);
}
运行结果:
二、克隆游戏对象
在游戏场景中有很多的敌人都是相同的属性,我们可以将它们制作成一个预制体,然后在代码中通过克隆就可以创建无数个相同的游戏对象。
//参数为需要克隆的物体
static T Instantiate<T>(T original) where T : Object;
列如:
using UnityEngine;
using System.Collections;
public class KeLongTest : MonoBehaviour {
public GameObject prefsl;
void OnGUI()
{
if(GUILayout.Button("克隆物体"))
{
int s = Random.Range(0, 20);
GameObject ss = GameObject.Instantiate(prefsl) as GameObject;
ss.transform.position += new Vector3(s, s, s);
}
}
}
运行结果: