unity中EventTrigger组件的应用
2024-09-11 11:22:26
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using UnityEngine.Events;
using UnityEngine.EventSystems; public class LeftMenuBarEvent
{
private static LeftMenuBarEvent leftMenuBar_this; //private LeftMenuBarEvent()
//{
//}
public static LeftMenuBarEvent Instance()
{
if (leftMenuBar_this == null)
{
leftMenuBar_this = new LeftMenuBarEvent();
}
return leftMenuBar_this;
} private bool m_state = true;
private EventTrigger m_eventTrigger;
public GameObject PanelName;
public void StartInit(GameObject Obj)
{
Obj.transform.Find("LeftBarPanel/menu/_right").gameObject.SetActive(true);
Obj.transform.Find("LeftBarPanel/menu/_left").gameObject.SetActive(false);
} public void MouseInit(GameObject Obj)
{ AddTriggersListener(Obj.transform.Find("LeftBarPanel/menu").gameObject, EventTriggerType.PointerEnter, menuEnter);
AddTriggersListener(Obj.transform.Find("LeftBarPanel/menu").gameObject, EventTriggerType.PointerExit,menuExit ); } /// <summary>
/// 为obj添加Eventrigger监听事件
/// </summary>
/// <param name="obj">添加监听的对象</param>
/// <param name="eventType">添加的监听类型</param>
/// <param name="action">触发的函数</param>
public void AddTriggersListener(GameObject obj, EventTriggerType eventType, UnityAction<BaseEventData> action)
{
m_eventTrigger = obj.GetComponent<EventTrigger>();
if (m_eventTrigger == null)
{
m_eventTrigger = obj.AddComponent<EventTrigger>();
}
if (m_eventTrigger.triggers.Count == )
{
m_eventTrigger.triggers = new List<EventTrigger.Entry>();
}
//定义所要绑定的事件类型
EventTrigger.Entry entry = new EventTrigger.Entry();
//设置事件类型
entry.eventID = eventType;
//定义回调函数
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(action);
//设置回调函数
entry.callback.AddListener(callback);
//添加事件触发记录到GameObject的事件触发组件
m_eventTrigger.triggers.Add(entry); } private float origiValue = -;
private float endValue = ;
private void Enter(GameObject Obj)
{
Debug.LogError("进入");
Obj.transform.Find("LeftBarPanel/menu/_right").gameObject.SetActive(false);
Obj.transform.Find("LeftBarPanel/menu/_left").gameObject.SetActive(true);
Obj.transform.Find("LeftBarPanel/menu/leftmenu").transform.DOLocalMoveX(endValue, 0.5f);
} private void Exit(GameObject Obj)
{
Debug.LogError("退出");
Obj.transform.Find("LeftBarPanel/menu/_right").gameObject.SetActive(true);
Obj.transform.Find("LeftBarPanel/menu/_left").gameObject.SetActive(false);
Obj.transform.Find("LeftBarPanel/menu/leftmenu").transform.DOLocalMoveX(origiValue, 0.5f);
} private void menuEnter(BaseEventData arg0)
{
Enter(PanelName);
} private void menuExit(BaseEventData arg0)
{
Exit(PanelName);
} }
最新文章
- QunInfo群数据库的还原与优化
- [Java] jackson注解
- Word Pattern | &; II
- C++-static的用法
- opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用
- java 读取文件到String(解决中文乱码)
- ASP.NET 常识
- 使用text-overflow:ellipsis对溢出文本显示省略号有两个好处
- ado.net 学习小结
- [转]struct 用法深入探索
- 64位linux报错Could not initialize class java.awt.image.BufferedImage
- JS高程5.引用类型(6)Array类型的位置方法,迭代方法,归并方法
- JavaScript 深浅拷贝
- C#三步实现标准事件处理程序
- 超详细SQLMap使用攻略及技巧分享
- 在 fragment 里面调用 findViewById
- LOJ6285 数列分块入门9(分块)
- MySQL基本SQL语句之数据插入、删除数据和更新数据
- Android Studio OkHttpClient使用
- 25 The Go image/draw package go图片/描绘包:图片/描绘包的基本原理
热门文章
- Got error -1 from storage engine
- Gatling实战(三)
- 0x14哈希之兔子兔子
- ERROR internal error: process exited while connecting to monitor
- git Remote: HTTP Basic: Access denied Git failed with a fatal error.
- linux设置静态IP及网卡选择
- php rsa
- python_requests官方文档中文版
- webpack dllPlugin使用(基于vue-cli webpack模板)
- java 枚举使用教程