Unity3D编辑器模式下射线查询鼠标下的ugui节点

liuhaopen 2017-08-02 03:16:16
最新想做个插件,想用鼠标拉ugui的prefab进Scene界面时直接挂到鼠标下的节点上,因为默认情况下都是挂在根场景节点上,经常需要手动在Hierarchy界面给新节点设个父节点。

现在缺了两步:
(1)拿到当前鼠标下最上层的节点(编辑器模式下);
(2)取消系统的处理,就是拉prefab进去后也不创建,我自己创建就好了(Event.current.Use ();
好像也没用啊)。


因为是UI节点,所以打算用EventSystem.current.RaycastAll的,但编辑器下的EventSystem.current已经是null了,Input.mousePosition也是固定的{0,0}。补充下我的Canvas的Render Mode是World Space的。

如果已经有插件做过这种功能了,麻烦也告诉我下,接触unity没多久请见谅。

我现在的做法是:

public class SceneEditor {
[InitializeOnLoadMethod]
static void Init()
{
SceneView.onSceneGUIDelegate += OnSceneGUI;
}
static void OnSceneGUI(SceneView sceneView)
{
Event e = Event.current;

if (e.type == EventType.DragUpdated || e.type == EventType.DragPerform)
{
DragAndDrop.visualMode = DragAndDropVisualMode.Copy;

if (e.type == EventType.DragPerform)
{
DragAndDrop.AcceptDrag();
//DragAndDrop.objectReferences[0])这个是拉进来的内容
//拿到鼠标下的最上层的节点,生成新节点后挂在它身上
//怎么拿????????
}
Event.current.Use ();
}
}
}
...全文
1157 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhaopen 2017-08-21
  • 打赏
  • 举报
回复
引用 6 楼 zq1564171310 的回复:
厉害!你那个是unity全屏的情况吧,如果unity不是全屏是否能用?
刚才试了非全屏也是一样可以的
zq1564171310 2017-08-18
  • 打赏
  • 举报
回复
厉害!你那个是unity全屏的情况吧,如果unity不是全屏是否能用?
liuhaopen 2017-08-17
  • 打赏
  • 举报
回复
已经解决了,没找到接口就自己拿场景里的所有节点做点击判定,先把Event.current.mousePosition转化为世界坐标:
Camera cam = sceneView.camera;
Vector3 mouse_abs_pos = e.mousePosition;
mouse_abs_pos.y = cam.pixelHeight - mouse_abs_pos.y;
mouse_abs_pos = sceneView.camera.ScreenToWorldPoint(mouse_abs_pos);
然后遍历场景所有节点,用节点的RectTransform的position加sizeDelta可确定其绝对的矩形区域,如果鼠标坐标在此区域内就是了。 Event.current.Use ();这句就可以取消掉系统的处理,这样拉prefab进去系统也不会帮我们创建,这时我们自己创建并判断鼠标坐标下有哪些节点,然后把新创建的挂在那个节点下就可以了。
红尘丿 2017-08-16
  • 打赏
  • 举报
回复
。。。。。。。
calss_cyl 2017-08-08
  • 打赏
  • 举报
回复
就是个 Drop Down 的两个操作啊。你的软件支持么?
liuhaopen 2017-08-07
  • 打赏
  • 举报
回复
需要补充的是我们项目不是用unity的,我是看我们自己的UI编辑器有点落后,所以想弄个unity插件替代我们的UI编辑器而已,所以做法上可能和unity惯用的不一样。 还有我接触unity不久,名词也可能用错了,我就是想在鼠标下面的节点生成子节点。
calss_cyl 2017-08-07
  • 打赏
  • 举报
回复
完全没有看懂你的额需求: 想用鼠标拉ugui的prefab进Scene界面时直接挂到鼠标下的节点上,因为默认情况下都是挂在根场景节点上,经常需要手动在Hierarchy界面给新节点设个父节点。。。。
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

2,589

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧