1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using DG.Tweening;
  6. using UnityEngine.Events;
  7. using UnityEngine.EventSystems;
  8.  
  9. public class LeftMenuBarEvent
  10. {
  11. private static LeftMenuBarEvent leftMenuBar_this;
  12.  
  13. //private LeftMenuBarEvent()
  14. //{
  15. //}
  16. public static LeftMenuBarEvent Instance()
  17. {
  18. if (leftMenuBar_this == null)
  19. {
  20. leftMenuBar_this = new LeftMenuBarEvent();
  21. }
  22. return leftMenuBar_this;
  23. }
  24.  
  25. private bool m_state = true;
  26. private EventTrigger m_eventTrigger;
  27. public GameObject PanelName;
  28. public void StartInit(GameObject Obj)
  29. {
  30. Obj.transform.Find("LeftBarPanel/menu/_right").gameObject.SetActive(true);
  31. Obj.transform.Find("LeftBarPanel/menu/_left").gameObject.SetActive(false);
  32. }
  33.  
  34. public void MouseInit(GameObject Obj)
  35. {
  36.  
  37. AddTriggersListener(Obj.transform.Find("LeftBarPanel/menu").gameObject, EventTriggerType.PointerEnter, menuEnter);
  38. AddTriggersListener(Obj.transform.Find("LeftBarPanel/menu").gameObject, EventTriggerType.PointerExit,menuExit );
  39.  
  40. }
  41.  
  42. /// <summary>
  43. /// 为obj添加Eventrigger监听事件
  44. /// </summary>
  45. /// <param name="obj">添加监听的对象</param>
  46. /// <param name="eventType">添加的监听类型</param>
  47. /// <param name="action">触发的函数</param>
  48. public void AddTriggersListener(GameObject obj, EventTriggerType eventType, UnityAction<BaseEventData> action)
  49. {
  50. m_eventTrigger = obj.GetComponent<EventTrigger>();
  51. if (m_eventTrigger == null)
  52. {
  53. m_eventTrigger = obj.AddComponent<EventTrigger>();
  54. }
  55. if (m_eventTrigger.triggers.Count == )
  56. {
  57. m_eventTrigger.triggers = new List<EventTrigger.Entry>();
  58. }
  59. //定义所要绑定的事件类型
  60. EventTrigger.Entry entry = new EventTrigger.Entry();
  61. //设置事件类型
  62. entry.eventID = eventType;
  63. //定义回调函数
  64. UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(action);
  65. //设置回调函数
  66. entry.callback.AddListener(callback);
  67. //添加事件触发记录到GameObject的事件触发组件
  68. m_eventTrigger.triggers.Add(entry);
  69.  
  70. }
  71.  
  72. private float origiValue = -;
  73. private float endValue = ;
  74. private void Enter(GameObject Obj)
  75. {
  76. Debug.LogError("进入");
  77. Obj.transform.Find("LeftBarPanel/menu/_right").gameObject.SetActive(false);
  78. Obj.transform.Find("LeftBarPanel/menu/_left").gameObject.SetActive(true);
  79. Obj.transform.Find("LeftBarPanel/menu/leftmenu").transform.DOLocalMoveX(endValue, 0.5f);
  80. }
  81.  
  82. private void Exit(GameObject Obj)
  83. {
  84. Debug.LogError("退出");
  85. Obj.transform.Find("LeftBarPanel/menu/_right").gameObject.SetActive(true);
  86. Obj.transform.Find("LeftBarPanel/menu/_left").gameObject.SetActive(false);
  87. Obj.transform.Find("LeftBarPanel/menu/leftmenu").transform.DOLocalMoveX(origiValue, 0.5f);
  88. }
  89.  
  90. private void menuEnter(BaseEventData arg0)
  91. {
  92. Enter(PanelName);
  93. }
  94.  
  95. private void menuExit(BaseEventData arg0)
  96. {
  97. Exit(PanelName);
  98. }
  99.  
  100. }

unity中EventTrigger组件的应用的更多相关文章

  1. 【转】Unity中添加组件的几种方法

    http://blog.csdn.net/monzart7an/article/details/23199647 一.在编辑器上面添加一个组件.这个不用多说. 二.在脚本中利用AddComponent ...

  2. Unity中通过类名字符串取组件类型的方法(Types.GetType用法)

    正常调用Type.GetType取不到组件,因为会先创建实例在获取,而Unity组件无法通过new来创建. 第二种创建方式是通过程序集,具体如下 Assembly.GetExecutingAssemb ...

  3. 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式

    Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...

  4. 在Unity中使用UGUI修改Mesh绘制几何图形

    在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...

  5. Unity中使用WebView

    Unity中使用WebView @(设计) 需求,最近游戏中需要引入H5直播页面和更新比较频繁的赛事页面,需求包括:加密传参数.和Unity交互,在Unity框架下其实有几种方案: 内置函数Appli ...

  6. Unity中创建二维码

    在网络上发现了一个可以把字符串转换成二维码的dll,但是我们要怎么使用他呢.不废话,直接进入主题. 用到的引用 using UnityEngine;using ZXing;using ZXing.Qr ...

  7. 在Unity中创建可远程加载的.unity3d包

    在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...

  8. 【unity shaders】:Unity中的Shader及其基本框架

    shader和Material的基本关系 Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出.绘图单元可以依据这个输出来将图 ...

  9. 解读Unity中的CG编写Shader系列三

    转自http://www.itnose.net/detail/6096068.html 在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上.这篇文章 ...

随机推荐

  1. 关于Python的协程问题总结

    协程其实就是可以由程序自主控制的线程 在python里主要由yield 和yield from 控制,可以通过生成者消费者例子来理解协程 利用yield from 向生成器(协程)传送数据# 传统的生 ...

  2. megacli安装使用

    1.下载安装MegaCli64我这里下载的是MegaCli8.07.10.tar.gz 2.解压安装[root@localhost soft]# tar -xvf MegaCli8.07.10.tar ...

  3. opencv学习之路(29)、轮廓查找与绘制(八)——轮廓特征属性及应用

    一.简介 HSV颜色空间(hue色调,saturation饱和度,value亮度) 二.HSV滑动条 #include "opencv2/opencv.hpp" #include ...

  4. 2019.04.10打卡(HTML)

    代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  5. HTML5滚动加载

    @using YoSoft.DSM.YoDSMModel;@using YoSoft.DSM.YoDSMBLL;@{ Layout = "~/Views/Shared/_LayoutComp ...

  6. sort排序原理

    var array = [10,5,40,25,1000,1];   array.sort(compareFunction);   function compareFunction(a, b) {  ...

  7. 让Visualstudio在win10下使用管理员方式运行

    https://www.cnblogs.com/zhaogaojian/p/10124629.html vs右键高级设置管理员运行后,每次直接运行使用的是管理员方式,但是如果直接在sln文件上点击使用 ...

  8. 解决 scapy “NameError: global name 'wrpcap' is not defined” 错误

    解决 scapy "NameError: global name 'wrpcap' is not defined" 错误 通过 scapy 编写发包脚本时遇到如下错误: Trace ...

  9. docker run -v参数

    挂载目录(直接给例子吧) -v=[]:绑定挂载目录 宿主机绑定: -v<host>:<container>:[rw|ro] 在Docker中新建一个共享的卷: -v /< ...

  10. 浅谈现公司的Spring Cloud微服务框架

    目录 说在前面 服务注册与发现 服务网关及熔断 配置中心 消息中心.服务链路追踪 小言 说在前面 本文偏小白,大佬慎入,若有错误或者质疑,欢迎留言提问,谢谢,祝大家新年快乐. spring cloud ...