zoukankan      html  css  js  c++  java
  • unity中EventTrigger组件的应用

    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 == 0)
            {
                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 = -160;
        private float endValue = 160;
        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);
        }
    
    }
  • 相关阅读:
    JavaScript中判断函数是new还是()调用
    IE6/7 and IE8/9(Q)中td的上下padding失效
    JQuery中html()方法使用不当带来的陷阱
    有name为action的表单元素时取form的属性action杯具了
    为非IE浏览器添加mouseenter,mouseleave事件
    各浏览器中querySelector和querySelectorAll的实现差异
    仅IE6/7/8中innerHTML返回值忽略英文空格
    各浏览器关键字/保留字作为对象属性的差异
    各浏览器中鼠标按键值的差异
    给body标签和document.body都添加点击事件后仅Firefox弹出了两次
  • 原文地址:https://www.cnblogs.com/Study088/p/9016407.html
Copyright © 2011-2022 走看看