Unity编辑器扩展-拉UGUI的prefab入场景时挂在鼠标下的Canvas上

本文介绍了如何通过Unity编辑器扩展功能,实现在Scene视图中将UGUI prefab拖拽时自动附加到鼠标下的Canvas上。通过监听SceneView.onSceneGUIDelegate事件并区分图片与prefab,对不同情况进行处理。当检测到Canvas时,新对象将被添加到其上,否则创建新的Canvas进行挂载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity的编辑器,你从Project视图拉图片或者prefab到Scene视图时,默认情况下它会挂在根节点上(起码我用的Unity5.4的是这样的),而每次都要手动地把新增节点挂到想要挂的Canvas上。还好Unity编辑器扩展可以让你自己自由定制,我想要的效果是这样的:


实现思路:
首先我们需要知道有什么东西拉进Scene视图了,一般来说插件系统会以Drag事件的形式给用户做定制处理的,Unity中的Scene发生的事件,可以在SceneView.onSceneGUIDelegate加个委托,大致代码是这样的:

public class SceneEditor
{
    [InitializeOnLoadMethod]
    static void Init()
    {
        SceneView.onSceneGUIDelegate += OnSceneGUI;
    }
    static void OnSceneGUI(SceneView sceneView)
    {
        Event e = Event.current;
        if (Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragPerform)
        {
            //拉U
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值