首页 > 其他 > 详细

UGUI:窗口限制以及窗口缩放

时间:2019-09-20 09:24:13      阅读:164      评论:0      收藏:0      [点我收藏+]

版权申明:

  • 本文原创首发于以下网站:
  1. 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
  2. 优梦创客的官方博客:https://91make.top
  3. 优梦创客的游戏讲堂:https://91make.ke.qq.com
  4. 『优梦创客』的微信公众号:umaketop
  • 您可以自由转载,但必须加入完整的版权声明

窗口拖动限制在一个特定的区域

技术分享图片

public class Scene : MonoBehaviour, IDragHandler, IPointerDownHandler
{
    public RectTransform RtTransform;
    public RectTransform RTParent;
    Vector2 downpos;
    Vector2 newpos;
    public void OnPointerDown(PointerEventData eventData)
    {
       RectTransformUtility.ScreenPointToLocalPointInRectangle
       (RtTransform, eventData.position
       ,eventData.pressEventCamera, out downpos);
        //print(downpos);
    }
    
    public void OnDrag(PointerEventData eventData)
    {
        if (RectTransformUtility.ScreenPointToLocalPointInRectangle
         (RtTransform, eventData.position
         , eventData.pressEventCamera, out newpos))
        {
           
            Vector2 offset = newpos - downpos;
            transform.parent.position = (Vector2)transform.parent.position + offset;
            downpos = newpos;
        }

        if (RTParent.position.x < 0)
        {
            Vector2 tmp = RTParent.position;
            tmp.x = 0;
            RTParent.position = tmp;
        }
        else if (RTParent.position.x > RtTransform.rect.width - RTParent.rect.width)
        {
            Vector2 tmp = RTParent.position;
            tmp.x = RtTransform.rect.width - RTParent.rect.width;
            RTParent.position = tmp;
        }

        if (RTParent.position.y < 0)
        {
            Vector2 tmp = RTParent.position;
            tmp.y = 0;
            RTParent.position = tmp;
        }
        else if (RTParent.position.y > RtTransform.rect.height - RTParent.rect.height)
        {
            Vector2 tmp = RTParent.position;
            tmp.y = RtTransform.rect.height - RTParent.rect.height;
            RTParent.position = tmp;
        }

    }

窗口缩放

技术分享图片

public class Zoom : MonoBehaviour,IPointerDownHandler,IDragHandler   
{
    public RectTransform canvasWindow;
    public RectTransform parentWinfow;
    Vector2 downpos;
    Vector2 newpos;
    Vector2 origsize;

    public void OnPointerDown(PointerEventData eventData)
    {
        origsize = parentWinfow.sizeDelta;
        RectTransformUtility.ScreenPointToLocalPointInRectangle
        (canvasWindow, eventData.position, eventData.pressEventCamera, out downpos);
    }

    public void OnDrag(PointerEventData eventData)
    {

        if (RectTransformUtility.ScreenPointToLocalPointInRectangle
           (canvasWindow, eventData.position, eventData.pressEventCamera, out newpos))
        {
            Vector2 offpos=newpos-downpos;
           // offpos.y *= -1;
            parentWinfow.sizeDelta =origsize + offpos;        
        }
    }
}

UGUI:窗口限制以及窗口缩放

原文:https://www.cnblogs.com/raymondking123/p/11554875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!