SDHK_Tool.Component.SC_TouchColor 触摸事件UI变色器

 

* 作者:闪电Y黑客

* 日期: 2019.7.10

* 功能:触摸事件 UI变色器

 

using System;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

/*
 * 作者:闪电Y黑客
 * 
 * 日期: 2019.7.10
 * 
 * 功能:触摸事件 UI变色器
 *
 */

namespace SDHK_Tool.Component
{

    /// <summary>
    /// 触摸UI变色器
    /// </summary>
    public class SC_TouchColor : MonoBehaviour, IPointerDownHandler, IPointerEnterHandler, IPointerUpHandler, IPointerExitHandler
    {

        private Image image;
        private RawImage rawimage;

        [Tooltip("点击颜色")]
        [SerializeField]
        public Color TouchDown = new Color(0.7f, 0.7f, 0.7f, 1);

        [Tooltip("停留颜色")]
        [SerializeField]
        public Color TouchEnter = new Color(0.9f, 0.9f, 0.9f, 1);

        // [SerializeField]
        private Color TouchExit = Color.white;

        private Color imageColor;


        private int TouchDownCount = 0;
        private int TouchEnterCount = 0;


        void Start()
        {
            if (GetComponent<Image>() != null) { image = GetComponent<Image>(); TouchExit = image.color; }

            if (GetComponent<RawImage>() != null) { rawimage = GetComponent<RawImage>(); TouchExit = rawimage.color; }

        }

        public void OnPointerDown(PointerEventData eventData)
        {
            TouchDownCount++;
            if (TouchDownCount == 1)
            {
                imageColor = TouchDown;
                Set_Color();
            }
        }

        public void OnPointerEnter(PointerEventData eventData)
        {
            TouchEnterCount++;
            if (TouchDownCount == 0 && TouchEnterCount == 1)
            {
                imageColor = TouchEnter;
                Set_Color();
            }
        }

        public void OnPointerUp(PointerEventData eventData)
        {
            TouchDownCount--;
            if (TouchDownCount == 0 && TouchEnterCount > 0)
            {
                imageColor = TouchEnter;
                Set_Color();
            }
            if (TouchDownCount == 0 && TouchEnterCount == 0)
            {
                imageColor = TouchExit;
                Set_Color();
            }
        }

        public void OnPointerExit(PointerEventData eventData)
        {
            TouchEnterCount--;
            if (TouchDownCount == 0 && TouchEnterCount == 0)
            {
                imageColor = TouchExit;
                Set_Color();
            }
        }

        public void Set_Color()
        {
            if (image != null) image.color = imageColor;
            if (rawimage != null) rawimage.color = imageColor;
        }


    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值