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;
相关推荐
阿松爱学习4 小时前
【Unity开发】Aspose.PDF的使用
unity·pdf·c#
淡海水6 小时前
02-04-原理篇-GC Roots与对象图遍历
算法·unity·c#·图·gc·遍历·roots
小此方2 天前
「插曲:Git」企业规范篇:DevOps开发模型、Git Flow五类分支设计与测试/预发布/生产环境Bug修复及Hotfix紧急发布流程
git·bug·devops
中文英文-我选中文3 天前
FreeRTOS 玄学Bug:调换任务创建顺序,程序时而正常、时而死机(栈溢出内存踩踏深度复盘)
bug
Keven_114 天前
BUG:UVA116
算法·bug·图论
鬼手点金4 天前
opencode-隐私优先配置
服务器·前端·javascript·bug·openclaw
辻弋2014 天前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
Martina_03215 天前
AI生成3D场景导入 Unity/Unreal 后,NPC 总串层?用6步检查导航高度与跨层连接
人工智能·游戏·数学建模·3d·unity·自然语言处理·aigc
小贺儿开发5 天前
Unity 局域网遥控幻灯片展示工具 3.0
科技·http·unity·工具·ppt·通信·网页
itmigrate5 天前
异步请求竞态,藏在页面渲染里的隐形bug
bug