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;
}
}
}
UGUI:窗口限制以及窗口缩放的更多相关文章
- JQuery-Dialog(弹出窗口,遮蔽窗口)
在Ajax中经常用到的弹出窗口和遮蔽窗口.自己写肯定是一个最佳方案,但时间和成本上,还是决定了寻找现成的吧.大概罗列一下.需要我满足我几个条件 一定要简洁方便 拥有遮蔽功能,Model Dialog ...
- TCP滑动窗口(发送窗口和接受窗口)
TCP窗口机制 TCP header中有一个Window Size字段,它其实是指接收端的窗口,即接收窗口.用来告知发送端自己所能接收的数据量,从而达到一部分流控的目的. 其实TCP在整个发送过程中, ...
- JavaScript子窗口调用父窗口变量和函数的方法
在做一个父窗口开启子窗口并且在子窗口关闭的时候调用父窗口的方法,达到局部刷新的目的. 父窗口: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- UI: 窗口全屏, 窗口尺寸
窗口全屏 窗口尺寸 示例1.窗口全屏UI/FullScreen.xaml <Page x:Class="Windows10.UI.FullScreen" xmlns=&quo ...
- tcp协议头窗口,滑动窗口,流控制,拥塞控制关系
参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 & 慢启动 快恢复 拥塞避免 http://b ...
- 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸
[源码下载] 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸 作者:webabcd 介绍背水一战 Windows 10 之 UI 窗口全屏 窗口尺寸 示例1.窗口全屏UI/F ...
- HTML中IFrame父窗口与子窗口相互操作
一.Iframe篇 //&&&&&&&&&&&&&&&&&&am ...
- Win32编程:窗口类样式+窗口外观样式+窗口显示样式
1.窗口类样式WNDCLASS.style CS_VREDRAW 提供窗口位置变化事件和高度变化事件的处理程序,功能是重绘窗口 CS_HREDRAW 提供窗口位置变化事件和宽度变化事件的处理程序,功能 ...
- JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作
一.Iframe 篇 公共部分 //父对象得到子窗口的值 //ObjectID是窗口标识,ContentID是元素ID function GetValue(ObjectID,ContentID) { ...
- js window.open() 父窗口与子窗口的互相调用(未必有用)
javascript 父窗口与子窗口的互相调用 <html> <head></head> <body> 主要实现父子关系的页面 window.opene ...
随机推荐
- ESP8266 LUA脚本语言开发: 准备工作-LUA文件加载与变量调用
前言 这节说一下多个文件调用 多个文件之间变量调用 准备两个文件 init.lua other.lua 开始 模块默认一开始调用的是init.lua 咱让init.lua调用 other.lua 很简 ...
- [LeetCode] 208. Implement Trie (Prefix Tree) 实现字典树(前缀树)
Implement a trie with insert, search, and startsWith methods. Example: Trie trie = new Trie(); trie. ...
- Ensight——Fluent重叠网格解决方案【翻译】
原文链接:https://support.ceisoftware.com/hc/en-us/articles/360000664191-Overset-Grid-Solutions-from-Flue ...
- Spring事物隔离级别及事物传播行为@Transactional实现
阅读本篇文章前,请先阅读如下文章: 四种事物隔离级别详解 先看下@Transactional可以配制那些参数及以其所代表的意义. isolation 枚举org.springframework.tra ...
- python运维开发常用模块(一)psutil
1.模块简介 psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻 松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网 络等)信息.它主 ...
- Python之threading多线程,多进程
1.threading模块是Python里面常用的线程模块,多线程处理任务对于提升效率非常重要,先说一下线程和进程的各种区别,如图 概括起来就是 IO密集型(不用CPU) 多线程计算密集型(用CPU) ...
- java登录点击验证码图片切换验证码无效
1.问题:我在写一个登录时需要添加一个验证码的功能,但是第一次可以生成验证码,但是点击的时候无法发起请求. 2.解决方案:在请求地址后面加一个时间戳,保证每次请求都不一样就可以了! window.on ...
- Mybatis成为Java互联网时代首选持久框架的原因
持久层可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其他情况下,重新开启系统仍然可以读取这些数据.一般执行持久任务的都是数据库系统.持久 ...
- 视觉融合定位github
1. obr_slam有关的非常有用的github链接: https://github.com/Ewenwan/MVision/tree/master/vSLAM/oRB_SLAM2 2. gnss, ...
- SQL --------------- between 和< >
between值 and 值 运算符用于选取介于两个值之间的数据范围内的值,常与where一块使用between运算符选择给定范围内的值.值可以是数字,文本或日期. 使用between的时候会与and ...