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;
相关推荐
Moweiii3 小时前
Godot最佳实践个人转述
c#·游戏引擎·godot
我爱一根柴哈8 小时前
Unity 3D游戏开发从入门进阶到高级
3d·unity·游戏引擎
小南家的青蛙11 小时前
O3DE社区发布2409.1版本
游戏引擎·图形引擎
fanfan_hongyun11 小时前
Unity自定义编辑器:基于枚举类型动态显示属性
unity·编辑器·游戏引擎
摇光~13 小时前
【shell编程】报错信息:bash: bad file descriptor(包含6种解决方法)
开发语言·ssh·bug·bash·shell
虾球xz16 小时前
游戏引擎学习第77天
学习·游戏引擎
weixin_4480653117 小时前
Unity学习笔记(七)使用状态机重构角色攻击
笔记·学习·unity
@C宝1 天前
【前端面试题】前端中的两个外边距bug以及什么是BFC
前端·bug
人间小客1 天前
Ubuntu下的小bug
bug
龚子亦2 天前
Unity学习之UGUI(二)
学习·unity·游戏引擎