unity 鼠标拖动UI 滚轮缩放大小

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/// <summary>
/// 鼠标拖动UI  滚轮缩放大小
/// </summary>

public class PageDragToZoom : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler, IBeginDragHandler, IDragHandler
{
    /// <summary>
    /// 缩放速度
    /// </summary>
    private float wheelSpeed = 0.1f;
    /// <summary>
    /// 是否缩放(鼠标进入退出 判断)
    /// </summary>
    public bool isTrue;

    Vector3 _originScale;//初始大小
    Vector3 _originPoint;//初始位置
    public Button _closeButton;//复位

    Vector3 offPos;
    Vector3 arragedPos;

    //Vector3 _scaleOne;
    //public Transform _ThisTransform;
    void Start()
    {
        _originPoint = this.transform.position;
        _originScale = this.transform.localScale;
        _closeButton.onClick.AddListener(CloseImage);
        //_scaleOne = transform.localScale;
    }
    
    void Update()
    {
        //UI最大可以放到两倍
        if (transform.localScale.x >= 2 || transform.localScale.x >= 2)
        {
            transform.localScale = new Vector3(2, 2, 2);
        }
        //UI最小可以缩小两倍
        if (transform.localScale.x <= 0.2f || transform.localScale.x <= 0.2f)
        {
            transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);
        }
        //通过鼠标滚轮键来对照片进行缩放
        if (isTrue == true)
        {
            // Debug.Log("通过鼠标滚轮键来对照片进行缩放");
            transform.localScale += new Vector3(Input.mouseScrollDelta.y * wheelSpeed, Input.mouseScrollDelta.y * wheelSpeed, Input.mouseScrollDelta.y * wheelSpeed);
        }
    }
    /// <summary>
    /// 回到初始状态
    /// </summary>
    private void CloseImage()
    {
        this.transform.position = _originPoint;
        this.transform.localScale = _originScale;

    }
    /// <summary>
    /// 鼠标进入
    /// </summary>
    /// <param name="eventData"></param>
    public void OnPointerEnter(PointerEventData eventData)
    {
        isTrue = true;
    }
    /// <summary>
    /// 鼠标退出
    /// </summary>
    /// <param name="eventData"></param>
    public void OnPointerExit(PointerEventData eventData)
    {
        isTrue = false;
    }


    
    /// <summary>
    /// 开始拖拽的时候
    /// </summary>
    /// <param name="eventData"></param>
    public void OnBeginDrag(PointerEventData eventData)
    {
        if (RectTransformUtility.ScreenPointToWorldPointInRectangle(transform.GetComponent<RectTransform>(), Input.mousePosition
     , eventData.enterEventCamera, out arragedPos))
        {
            offPos = transform.position - arragedPos;
        }
    }
    /// <summary>
    /// 拖拽中
    /// </summary>
    /// <param name="eventData"></param>
    public void OnDrag(PointerEventData eventData)
    {
        transform.position = offPos + Input.mousePosition;

    }


}

猜你喜欢

转载自blog.csdn.net/qq_37524903/article/details/126953284