首页 > 代码库 > Unity-3D 委托Delegate

Unity-3D 委托Delegate

我现在想要做一个类与类之间的通信。

概念啥的就不说了,我先写个在Unity3D中的小Demo

建立一个Cube,一个Cube脚本,绑在Cube上。脚本内容:

using UnityEngine;
using System.Collections;
public delegate void Delegate();
public class Cube : MonoBehaviour {
	//public delegate void Delegate();//定义委托,注意返回类型和参数  
	public Delegate delegateFun;//定义委托变量(委托是一个数据类型
	// Use this for initialization
	void Start () {
		delegateFun=new Delegate(Up);
		//deleteFun = Up;
		delegateFun ();
	}
	
	// Update is called once per frame
	void Update () {
	
	}

	void Up(){
		Debug.Log ("Cube is UP!");
	}
}
运行结果:

Cube is UP!

成功!


进一步,写一个Main类绑定在摄像机上,调用Cube类中的Up怎么办

看代码:

Cube.cs

using UnityEngine;
using System.Collections;
public delegate void Delegate();
public class Cube : MonoBehaviour {
	public static Delegate delegateFun;

	void Awake(){
		delegateFun=new Delegate(Up);
	}

	void Up(){
		Debug.Log ("Cube is UP!");
	}
}
Main.cs

using UnityEngine;
using System.Collections;

public class Main : MonoBehaviour {
	void Start () {
		Cube.delegateFun ();
	}
}
ok,能运行出来结果。

需要注意的是 Awake执行在Start之前,如果delegateFun实例化在原来的Start中就会造成空指针。

把这个变量直接static可通过类直接调用。(还是没到自己想要的结果)







Unity-3D 委托Delegate