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

╄→尐↘猪︶ㄣ 提交于 2020-01-05 13:14:47

版权申明:

  • 本文原创首发于以下网站:
  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;        
        }
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!