Unity 事件2

UIMouseEvent.cs:

using UnityEngine;

using System;



public abstract class UIMouseEvent : MonoBehaviour

{

	public EventHandler<EventArgs> MouseEvent { get; set; }

}


 

UIEvent.cs:

using UnityEngine;

using System;

using System.Collections.Generic;

using System.Collections;



public class UIEvent

{

	public static GameObject FindChild (string objName)

	{

		GameObject obj = GameObject.Find("quickLoginBtn");

		return obj;

	}



	public static void AddChildMouseClickEvent (string objName, EventHandler<EventArgs> action)

	{

		AddMouseClickEvent (FindChild (objName), action);

	}

	

	public static void AddMouseClickEvent (GameObject obj, EventHandler<EventArgs> action)

	{

		if (obj != null) {

			AddEvent<UIMouseClick> (obj, action);

		}		

		Debug.Log("111111");

	}



	public static void AddEvent<T> (GameObject obj, EventHandler<EventArgs> action) where T : UIMouseEvent

	{

		T mouseEvent = obj.GetComponent<T> ();

		if (null != mouseEvent) {

			GameObject.DestroyImmediate (mouseEvent);

		}

		mouseEvent = obj.AddComponent<T> ();

		mouseEvent.MouseEvent = action;		

		Debug.Log("22222");

	}

	

	public static void AttachEvent ()

	{

		Debug.Log ("AttachEvent");

		AddChildMouseClickEvent ("quickLoginBtn", OnClickStart);

	}



	private static void OnClickStart (object sender, EventArgs e)

	{

		Debug.Log("OnClickStart");

	}

}






 

UIMouseClick.cs:

using UnityEngine;

using System;



public class UIMouseClick : UIMouseEvent

{

	void OnClick()

	{		

		Debug.Log("hhhhh");	

		UIEvent.AttachEvent();

		if(null != MouseEvent)

		MouseEvent(gameObject, null);

	}

}


 

最后把UIMouseClick.cs放到NGUI的button上面就可以了,这个button的名字为“quickLoginBtn”,结果如下:

Unity 事件2

 

你可能感兴趣的:(unity)