我现在想要做一个类与类之间的通信。
概念啥的就不说了,我先写个在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可通过类直接调用。(还是没到自己想要的结果)
原文地址:http://blog.csdn.net/lihuozhiling0101/article/details/38824027