码迷,mamicode.com
首页 > 其他好文 > 详细

Unity-3D 委托Delegate

时间:2014-08-25 19:20:34      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:delegate   unity3d   

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

概念啥的就不说了,我先写个在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

标签:delegate   unity3d   

原文地址:http://blog.csdn.net/lihuozhiling0101/article/details/38824027

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!