UGUI:窗口限制以及窗口缩放
版权申明:
- 本文原创首发于以下网站:
- 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
- 优梦创客的官方博客:https://91make.top
- 优梦创客的游戏讲堂:https://91make.ke.qq.com
- 『优梦创客』的微信公众号: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;        
        }
    }
}
更多知识、教程、源码请进↓↓↓
优梦创客工坊
精品内容推送请搜索↓↓↓
微信公众号:优梦创客
免费直播、VIP视频请进↓↓↓
优梦创客课堂
游戏开发交流群↓↓↓ 
 
                
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号