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

liuhaopen liuhaopen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最新想做个插件,想用鼠标拉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 ();
}
}
}
...全文

相关推荐

unity3d 一些常用的脚本

Unity3D常用脚本:Unity3d 鼠标拾取、 Unity3d 雨滴落水脚本、Unity3D读取保存XML文件、Unity3D单击物体弹出GUI窗口等

l2008l

Unity3D与Three.js技术选型全解析:从游戏引擎到Web3D库

在3D可视化开发领域,技术选型是项目成功的关键。理解实时3D渲染的基本原理,即通过计算机图形学技术将三维模型转换为二维屏幕图像,是实现沉浸式体验的基础。其技术价值在于能够将复杂数据或概念以直观、交互的方式呈现,广泛应用于数字孪生、产品展示、数据看板等场景。无论是追求高保真渲染与复杂物理交互的桌面应用,还是需要快速传播、即开即用的Web端可视化,选择合适的技术栈都至关重要。本文聚焦于Unity3D与Three.js这两大主流方案,深入剖析其核心差异。Unity3D作为一体化的游戏引擎,提供了强大的编辑器与资产

chuanzhuanxian8669

unity3d UGUI源码

UGUI的源码,是Unity3d界面开发必学知识的主要源码。可下载。

DNWalter

Unity UGUI高亮引导点击[可运行源码]

本文介绍了在Unity3D中实现UGUI高亮引导点击功能的方法。通过创建一个GuideMask类,继承ICanvasRaycastFilter接口,实现了对指定区域的射线穿透处理,使得引导黑幕的矩形区域内的射线检测无效化,从而让下层UI响应点击。同时,文章还提供了相关的Shader代码,用于实现高亮效果。该方法适用于Unity 2019.4.0f1 Personal版本,通过世界坐标到屏幕坐标的转换,以及UGUI坐标系的处理,实现了精确的引导点击区域控制。

g8f9d0s1a2

UGUI粒子系统组件。

UGUI粒子系统组件。

bingxueyouwu2013
评论 7
收藏 已收藏
分享
返回顶部
liuhaopen
Unity3D 2,592 成员 2,147 内容