unity3d用按钮进行拖拽放大或缩小panel

简介: 效果可以看下面的图,实现窗口的拖拽放大缩小测试.gif设置panel的瞄点为左上角,设置point值 X:0,Y:1,按钮的图右下角放置,瞄点为panel的右下角,按钮挂载当前脚本,赋值panel对象即可设置.

效果可以看下面的图,实现窗口的拖拽放大缩小


img_eee62c48dc5a710d5f9f0071067f5fde.gif
测试.gif

设置panel的瞄点为左上角,设置point值 X:0,Y:1,按钮的图右下角放置,瞄点为panel的右下角,按钮挂载当前脚本,赋值panel对象即可


img_ad8ee691c16fa83b93625c2994d6779d.png
设置.png
using UnityEngine;
using UnityEngine.EventSystems;

/// <summary>
/// unity实现窗口的放大缩小
/// </summary>
public class ResizePanel : MonoBehaviour, IPointerDownHandler, IDragHandler
{

    // 控制的面板
    public RectTransform panelRectTransform;
    // 最小缩放
    public Vector2 minSize = new Vector2(120, 120);
    // 最大缩放
    public Vector2 maxSize = new Vector2(800, 600);
    private Vector2 originalLocalPointerPosition;
    private Vector2 originalSizeDelta;


    public void OnPointerDown(PointerEventData data)
    {
        originalSizeDelta = panelRectTransform.sizeDelta;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(panelRectTransform, data.position, data.pressEventCamera, out originalLocalPointerPosition);
    }

    public void OnDrag(PointerEventData data)
    {
        if (panelRectTransform == null)
            return;

        Vector2 localPointerPosition;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(panelRectTransform, data.position, data.pressEventCamera, out localPointerPosition);
        Vector3 offsetToOriginal = localPointerPosition - originalLocalPointerPosition;

        Vector2 sizeDelta = originalSizeDelta + new Vector2(offsetToOriginal.x, -offsetToOriginal.y);
        sizeDelta = new Vector2(
            Mathf.Clamp(sizeDelta.x, minSize.x, maxSize.x),
            Mathf.Clamp(sizeDelta.y, minSize.y, maxSize.y)
        );

        panelRectTransform.sizeDelta = sizeDelta;
    }
}
相关文章
|
19天前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
46 3
|
1月前
|
图形学
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
|
4月前
|
前端开发 C# 图形学
unity按钮绑定与场景切换
unity按钮绑定与场景切换
39 0
|
12月前
|
图形学
|
编译器 API 图形学
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
137 0
|
前端开发 图形学 Python
【Unity使用UGUI实现王者荣耀UI界面(二)】加载页面-静音按钮和页面完善
【Unity使用UGUI实现王者荣耀UI界面(二)】加载页面-静音按钮和页面完善
367 0
【Unity使用UGUI实现王者荣耀UI界面(二)】加载页面-静音按钮和页面完善
|
前端开发 Go 图形学
Unity全方位拖拽物体攻略
Unity中UGUI控件和3D物体拖拽实现基本原理Unity拖拽的基本原理:射线检测,鼠标位置增量转换为统一空间的位置增量,将位置增量添加到拖拽物体原位置上。 统一空间指的是将所有向量转换为同一空间下再进行计算。
3570 0
|
图形学
Unity3D 重写下拉菜单/Dropdown组件、开启每个按钮可用
Override Dropdown Component 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
2684 0
|
图形学
在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
|
图形学
unity3d拖拽鼠标旋转模型
测试.png using UnityEngine; /// /// 脚本挂载到模型即可,模型添加 collider,isTrigger为true /// public class ModelRotation : MonoBehaviou...
1154 0