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视频请进↓↓↓
优梦创客课堂
游戏开发交流群↓↓↓