基於Unity3d的事件系統和C#的委託特性,提供一下通用事件監聽代碼,挺真通用的說,反正用過都說好
lua和C#都能通用,長期在項目中使用,無任何暗病
而網上覆制粘貼代碼,很容易有空行,(或者前面行號)
代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems; //事件系統
namespace kernal
{
public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onClick;
public VoidDelegate onDown;
public VoidDelegate onEnter;
public VoidDelegate onExit;
public VoidDelegate onUp;
public VoidDelegate onSelect;
public VoidDelegate onUpdateSelect;
/// <summary>
/// 得到“監聽器”組件
/// </summary>
/// <param name="go">監聽的遊戲對象</param>
/// <returns>
/// 返回監聽器
/// </returns>
public static EventTriggerListener Get(GameObject go)
{
EventTriggerListener lister = go.GetComponent<EventTriggerListener>();
if (lister==null)
{
lister = go.AddComponent<EventTriggerListener>();
}
return lister;
}
public override void OnPointerClick(PointerEventData eventData)
{
if (onClick!=null)
{
onClick(gameObject);
}
}
public override void OnPointerDown(PointerEventData eventData)
{
if (onDown != null)
{
onDown(gameObject);
}
}
public override void OnPointerEnter(PointerEventData eventData)
{
if (onEnter != null)
{
onEnter(gameObject);
}
}
public override void OnPointerExit(PointerEventData eventData)
{
if (onExit != null)
{
onExit(gameObject);
}
}
public override void OnPointerUp(PointerEventData eventData)
{
if (onUp != null)
{
onUp(gameObject);
}
}
public override void OnSelect(BaseEventData eventData)
{
if (onSelect != null)
{
onSelect(gameObject);
}
}
public override void OnUpdateSelected(BaseEventData eventData)
{
if (onUpdateSelect != null)
{
onUpdateSelect(gameObject);
}
}
}//class_end
}
使用方法
EventTriggerListener.Get(Btn_10_Diamonds.gameObject).onClick += Purchase10Diamend;
另外,去除代碼空行方法
- Enter: Ctrl+H
- Find what: ^(?([^\r\n])\s)*\r?$\r?\n
- Replace with: [Empty]
- Look in: Current Document
- Find Option: Use Regular Expressions
- Click: Replace All
解釋一下正則表達式^:b*$\n,^表示一行的開始,$表示一行的結束,:b表示空格或tab,*表示0個或多個。\n表示換行符。
-
上面截圖有點錯。。。。。。。。。。。。