unity拖拽物品遇到的bug及解决思路

记录一下拖拽实现过程中遇到的bug

RectTransform

专门用在UI中transform

判断点击是否在UI中

使用这个函数就可以判断点击的是否是UI面板,返回true表明在UI面板中

csharp 复制代码
EventSystem.current.IsPointerOverGameObject()

值得一提的是,如果发现了有UI穿透效果,看看自己项目
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);射线检测那一块,我在实现拖拽的时候就遇到了一个bug,就是点击ui结果可以移动,后面查了查资料才知道射线检测并不会发现点击是个UI面板就不可以点击地面,应该在检测射线的时候也检测一下是否为ui面板,是的话直接return了,不再有射线检测并且移动操作了。

offsetmax和offsetmin值

在拖拽的过程中,这两个值会被改变,offsetmax就是右上角的值,offsetmin就是左下角的值。当拖拽完成要将rectTransform改成原来的地方。而不是不管他。

就有了两个操作,向内偏移和向外扩展,看一下gpt的介绍

offsetmax就是右上角的值,也就是(right,top),offsetminx就是左下角的值(left,bottom),

上面图片举得是反例,max按正值算的。下面的代码才是正确的解决思路,左下角像上和向右五个单位。如果t.offsetMax = Vector2.one * 5;这么写,代表右上角像右和向上偏移5格,很显然这样是不对的,应该是向左边和向下5格,所以代码是负数的形式来标识。

csharp 复制代码
	RectTransform t = transform as RectTransform;
    t.offsetMax = -Vector2.one * 5;
    t.offsetMin = Vector2.one * 5;
相关推荐
黑臂麒麟1 小时前
Electron&OpenHarmony 跨平台实战开发(bug):npm 安装 Electron 依赖常见错误排查
electron·npm·bug·openharmony
AllBlue3 小时前
unity嵌入安卓界面,如何显示状态
android·unity·游戏引擎
CIb0la3 小时前
Complete Bug Bounty tool List for free
linux·运维·bug
欧恩意3 小时前
【Viusal Studio】关于增量链接机制
汇编·windows·bug
tealcwu4 小时前
【Unity技巧】实现在Play时自动保存当前场景
java·unity·游戏引擎
tealcwu4 小时前
【Unity基础】实现Scroll View跟随动态内容滚动
java·unity·游戏引擎
野奔在山外的猫5 小时前
【文档】VSCode 配置 Unity 环境流程
unity
Austindatabases6 小时前
SQLite 开发中的数据库开发规范 --如何提升业务系统性能避免基础BUG
数据库·oracle·sqlite·bug·数据库开发
技术小甜甜6 小时前
[Godot排错] 上传 Google Play Console 封闭测试时签名证书不匹配错误的解决方案
游戏引擎·godot·游戏开发
变身缎带14 小时前
Unity中的NetworkManager基于protobuf, Socket-TCP
tcp/ip·unity·游戏引擎