我是靠谱客的博主 微笑雪碧,最近开发中收集的这篇文章主要介绍真Unity3d_分享一个通用事件监听EventTrigger以及拷贝代码去除空行问题代码使用方法另外,去除代码空行方法继承类避免滚动和点击冲突,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
基于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: ^(?([^rn])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表示换行符。
^(?([^rn])s)*r?$r?n
-
上面截图有点错。。。。。。。。。。。。
继承类避免滚动和点击冲突
namespace kernal
{
/// <summary>
/// 避免和滚动事件冲突的点击事件;用一个很笨的方法做延迟,解决点击和 Drag 冲突问题
/// </summary>
public class EventGesture:EventTriggerListener
{
static bool isSrolling = false;
public override void OnPointerClick(PointerEventData eventData)
{
if (isSrolling == true) return;
base.OnPointerClick(eventData);
}
public override void OnDrag(PointerEventData eventData)
{
isSrolling = true;
base.OnDrag(eventData);
}
public override void OnPointerUp(PointerEventData eventData)
{
Invoke("SetScrollUp",0.01f);
//只能判断是否在ui上
//if (EventSystem.current.IsPointerOverGameObject(finterid)) {
// //base.onPointerClick;
//}
//isSrolling = false;
base.OnPointerUp(eventData);
}
void SetScrollUp()
{
isSrolling = false;
}
}
}
最后
以上就是微笑雪碧为你收集整理的真Unity3d_分享一个通用事件监听EventTrigger以及拷贝代码去除空行问题代码使用方法另外,去除代码空行方法继承类避免滚动和点击冲突的全部内容,希望文章能够帮你解决真Unity3d_分享一个通用事件监听EventTrigger以及拷贝代码去除空行问题代码使用方法另外,去除代码空行方法继承类避免滚动和点击冲突所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复