2.5 KiB
2.5 KiB
#unity/日常积累
之前的方法,是canvas是ScreenSpaceOverlay的模式下,进行的计算操作;
之前的方法,没适用于Render Mode是Camera的模式;
如果是camera模式的话,需要再处理一下,换算的关系;
这个改版的工程,是有继承自,鼠标点击的;
还是跟之前的方法一样的,先定义一个方向的枚举;
然后,设置一个最小参数范围,还有rect的组件,是否拖曳,方向默认为无,最终位置,偏移值等; 这个的拖曳,跟上一个不太一样的地方在于,它只拖曳标题;
这个的修改,是在鼠标点击的时候,它会修改层级关系,确保transform是在最外层
这是画布;
然后这里的画布和rect获取,就简单明了很多;
这个改版是只能拖曳标题,所以写一个检测方法,检测鼠标按键,是否在标题的rect内;
如果鼠标框是在标题内,标识设为true,然后设置一下偏移;
然后, 调用接口,获取到屏幕点的世界坐标;
然后,也是用trans的世界坐标,也就是position,减去偏移值; 这就是拖曳标题移动;
然后,检测方向的那些接口,都是同理; 拖曳的话,如果不是标题框,也是同理,调用拖曳修改预制体宽高的FloatingWindow()函数;
这个FloatingWindow()函数,前面都是一样的; 修改宽高的操作,是不变的,主要是位置的修改;
修改完宽高之后,判断一下canvas画布的renderMode,如果是ScreenSpaceCamera的话,就先基于rect的世界坐标,获得它的屏幕坐标;
这是获得屏幕坐标的方法;
获得屏幕坐标之后,将屏幕坐标,加上前面的x和y的屏幕偏移,作为传参;
转成世界坐标;
将转换后的世界坐标,赋值给rect即可;
完成;


















