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);
} }

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. 【Diary】期中考+春游记

    4.22-4.24 期中考 周一 早上 赶来三楼电教厅自习,疯狂复习历史.想到下午考语文历史两大文科,不由得有点慌吧. 突然,沙雕体委说了一句: 下午考政治,你不背诵吗 下午 语文感觉正常发挥. 政治 ...

  2. \r \n \t \n\t

    [root@localhost advanced_shell_script]# cat test15.sh #!/bin/bash #!/bin/bash # echo -e# 默认情况下,echo命 ...

  3. ASCII对应码表-键值(完整版)

    ASCII对应码表-键值(完整版) Bin (二进制) Oct (八进制) Dec (十进制) Hex (十六进制) 缩写/字符 解释 0000 0000 00 0 0x00 NUL(null) 空字 ...

  4. linux普通帐号可以临时切换到root(添加用户到sudoers中)

    一般,进入terminal之后,默认是普通账户能操作的功能,能访问的目录有限,需要临时切换到root账户 那么此时就需要配置sudoers文件,可以让普通用户通过sudo命令临时切换到root账户 首 ...

  5. shell之for和if实现批量替换多目录下的文件

    问题背景: 生产环境的项目图片文件夹众多,每个项目都会有一个图片文件夹,现在要批量替换每个文件夹下的一张模板图片 如图,我们要替换每一个文件夹下的01.jpg shell 脚本 #/bin/bash ...

  6. redis哨兵集群配置

    redis 集群架构图: 需要先配置redis主从,我这边是单机部署的. 采用一主一从,两个sentinel. redis host: 172.31.11.235 redis-master port: ...

  7. JavaScript核心--Function

    什么是: 保存一段可重用的代码段的对象 何时: 只要一段代码可能反复使用时,都要封装为函数,反复调用函数 如何: 创建: 3种: 1. 直接量: function 函数名(参数列表){ 函数体; re ...

  8. 用Python绘制一个感兴趣是数学公式图

    下面是函数sin,cos函数的图像: 代码如下: import numpy as np import pylab as pl import matplotlib.font_manager as fm ...

  9. JVM即时编译器

    为何HotSpot虚拟机要使用解释器与编译器并存的架构? 为何HotSpot虚拟机要实现两个不同的即时编译器? 程序何时使用解释器执行?何时使用编译器执行? 哪些程序代码会被编译为本地代码?如何编译为 ...

  10. loj #6.Guess Number

    原题链接:https://loj.ac/problem/6 Guess Number 内存限制:256 MiB 时间限制:1000 ms 题目类型:交互 题目描述 这是一个交互题的模板. 系统会随机生 ...