zoukankan      html  css  js  c++  java
  • UI界面事件监听

    事件监听方法

    using UnityEngine;
    using System.Collections;
    using UnityEngine.EventSystems;
    using System;
    using UnityEngine.UI;
    /// <summary>
    /// 按钮监听
    /// </summary>
    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;
        public VoidDelegate onDeselect;
        public VoidDelegate onCancel;
        static public EventTriggerListener Get(GameObject go)
        {
            EventTriggerListener listener = go.GetComponent<EventTriggerListener>();
            if (listener == null) listener = go.AddComponent<EventTriggerListener>();
            return listener;
        }
    
    
        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);
        }
        public override void OnDeselect(BaseEventData eventData)
        {
            if (onDeselect != null) onDeselect(gameObject);
        }
        public override void OnCancel(BaseEventData eventData)
        {
            if (onCancel != null) onCancel(gameObject);
        }
    }

    事件监听方法的调用

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    using DG.Tweening;
    /// <summary>
    /// 控制任务栏的显示和收回
    /// </summary>
    namespace GameLogic.UI
    {
        public class UIImageCtrl : MonoBehaviour
        {
            [SerializeField]
            private Toggle TaskCtrl_tog;//任务button
            [SerializeField]
            private Dropdown DropDown;//任务button
    
            [SerializeField]
            private Sprite show;//按钮的图片
            [SerializeField]
            private Sprite hide;//按钮的图片
            [SerializeField]
            private GameObject HideShowUI;//需要隐藏的UI;
            void Start()
            {
                if (DropDown != null)
                {
                    EventTriggerListener.Get(DropDown.gameObject).onClick += DropDownOnClick;
                    EventTriggerListener.Get(DropDown.gameObject).onSelect += DropDownOnSelect;
                }
            }
    
            public void OnClick()
            {
                if (TaskCtrl_tog != null)
                {
                    if (TaskCtrl_tog.isOn)
                    {
                        TaskCtrl_tog.image.sprite = hide;
                        if (HideShowUI)
                        {
                            HideShowUI.SetActive(false);
                        }
                    }
                    else
                    {
                        TaskCtrl_tog.image.sprite = show;
                        if (HideShowUI)
                        {
                            HideShowUI.SetActive(true);
                        }
                    }
                }
            }
    
            private void DropDownOnSelect(GameObject go)
            {
                Debug.Log("下啦列表关闭");
              DropDown.gameObject.GetComponent<Image>().sprite = show;
            }
            private void DropDownOnClick(GameObject go)
            {
                Debug.Log("下啦列表开启");
                DropDown.gameObject.GetComponent<Image>().sprite = hide;
            }
        }
    }
  • 相关阅读:
    vue-cli创建的webpack工程中引用ExtractTextPlugin导致css背景图设置无效的解决方法
    如何做一个技术全面的架构师
    如何做一个技术全面的架构师
    最佳实践:阿里云VPC、ECS支持IPv6啦!
    最佳实践:阿里云VPC、ECS支持IPv6啦!
    Windows10中打开git bash闪退解决方案
    webpack打包多入口配置
    Express 文档(常见问题)
    Express 文档(常见问题)
    bzoj1089严格n元树
  • 原文地址:https://www.cnblogs.com/qinshuaijun/p/8529882.html
Copyright © 2011-2022 走看看