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)
{
//拉UI prefab或者图片入scene界面时帮它找到鼠标下的Canvas并挂在其上,若鼠标下没有画布就创建一个
Object handleObj = DragAndDrop.objectReferences[0];
if (!IsNeedH

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

被折叠的 条评论
为什么被折叠?



