unity 当中UI的通过鼠标滚轮来进行缩放,并且约束放大缩小的范围

unity 当中UI的通过鼠标滚轮来进行缩放,并且约束放大缩小的范围```

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIScaleContor : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler, IBeginDragHandler, IDragHandler
{
public float wheelSpeed;
public bool isTrue;
Vector3 _originScale;
Vector3 _originPoint;
public Button _closeButton;
Vector3 _scaleOne;
public void OnPointerEnter(PointerEventData eventData)
{
isTrue = true;
}

public void OnPointerExit(PointerEventData eventData)
{
    isTrue = false;
}

// Start is called before the first frame update
void Start()
{
    _originPoint = this.transform.position;
    _originScale = this.transform.localScale;
    _closeButton.onClick.AddListener(CloseImage);
    _scaleOne = transform.localScale;
}

private void CloseImage()
{
    this.transform.position = _originPoint;
    this.transform.localScale = _originScale;

}

// Update is called once per frame
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.5f || transform.localScale.x <= 0.5f)
{
transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
}
//通过鼠标滚轮键来对照片进行缩放
if (isTrue == true)
{
transform.localScale += new Vector3(Input.mouseScrollDelta.y * wheelSpeed, Input.mouseScrollDelta.y * wheelSpeed, Input.mouseScrollDelta.y * wheelSpeed);
}

}

private Image img;
Vector3 offPos;
Vector3 arragedPos; 
/// <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;

}

}


```javascript
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class YeMianSuoFang : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler, IBeginDragHandler, IDragHandler
{
    public float wheelSpeed;
    public bool isTrue;
    Vector3 _originScale;
    Vector3 _originPoint;
    public Button _closeButton;
    Vector3 _scaleOne;
    public void OnPointerEnter(PointerEventData eventData)
    {
        isTrue = true;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        isTrue = false;
    }

    // Start is called before the first frame update
    void Start()
    {
        _originPoint = this.transform.position;
        _originScale = this.transform.localScale;
        _closeButton.onClick.AddListener(CloseImage);
        _scaleOne = transform.localScale;
    }

    private void CloseImage()
    {
        this.transform.position = _originPoint;
        this.transform.localScale = _originScale;

    }

    // Update is called once per frame
    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.5f || transform.localScale.x <= 0.5f)
        {
            transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
        }
        //通过鼠标滚轮键来对照片进行缩放
        if (isTrue == true)
        {
            transform.localScale += new Vector3(Input.mouseScrollDelta.y * wheelSpeed, Input.mouseScrollDelta.y * wheelSpeed, Input.mouseScrollDelta.y * wheelSpeed);
        }

    }
   
    private Image img;
    Vector3 offPos;
    Vector3 arragedPos;
    /// <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;

    }


}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Unity中,我们可以通过编写脚本来实现使用鼠标滚轮进行UI缩放的功能。首先,我们需要创建一个脚本来处理UI缩放的逻辑。我们可以使用C#来编写这个脚本。在脚本中,我们需要访问Canvas的scale属性来实现UI缩放效果。然后,我们可以使用Event Trigger组件来监听鼠标滚轮事件,并在事件响应函数中根据滚轮的滚动方向来调整Canvas的scale属性,以实现UI缩放效果。具体代码如下所示: ```c# using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; public class UIZoom : MonoBehaviour, IScrollHandler { public float zoomSpeed = 0.1f; // 缩放速度 public void OnScroll(PointerEventData eventData) { float scrollDelta = eventData.scrollDelta.y; float scaleFactor = 1 + scrollDelta * zoomSpeed; // 获取Canvas的scale Vector3 scale = GetComponent<Canvas>().scaleFactor; // 根据滚轮滚动方向来调整scale属性 scale.x *= scaleFactor; scale.y *= scaleFactor; // 更新Canvas的scale GetComponent<Canvas>().scaleFactor = scale; } } ``` 在这段代码中,我们创建了一个UIZoom类,该类实现了IScrollHandler接口,以便监听鼠标滚轮事件。在OnScroll函数中,我们通过eventData.scrollDelta.y来获取鼠标滚轮的滚动方向,然后根据滚动方向来调整Canvas的scale属性,从而实现UI缩放效果。 最后,我们只需要将这个脚本挂载到Canvas上,然后就可以实现使用鼠标滚轮缩放UI的功能了。希望这个回答能帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小呆子lazy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值