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 ();
}
}
}
...全文
1063 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界面给新节点设个父节点。。。。

2,535

社区成员

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

Unity3D社区公告:

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

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