Editor编辑器扩展在Scene View添加按钮和logo

Posted avi9111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Editor编辑器扩展在Scene View添加按钮和logo相关的知识,希望对你有一定的参考价值。

最近发现一个不得了的lego项目,

可以很简单的做出,马里奥64位那样的横版3D过关游戏

其实这个项目也在unity官方模板出现很久了,只是一直在深山修炼,孤陋寡闻

看了这个项目的logo很是喜欢

那么我们今天就来做一个

1)首先就是继承Editor Window

2)然后这样。。。。。。。。是不行的

 3)原来要Editor。OnSceneUI,但我们还是直接用更内核的。 SceneView

    void OnEnable()
    
        SceneView.duringSceneGui += SceneGUI;
        
    
    
    void OnDisable()
    
        SceneView.duringSceneGui -= SceneGUI;
    

4,一开始scenView 不好用,后来发现小哥的文章获得答案(下面参考链接)

一开始小哥也是用错的,各种Canvas GUIContent方案尝试,后来他成功了

    void SceneGUI(SceneView view)
    
        //错的
        if (GUILayout.Button("fdsafadsf"))
        
            
        
        //还是错的
        GUI.Button(new Rect(10,10,100,100),"11111111");
    

5)

    // 绑定duringSceneGui等代码略,详见github工程
    private void SceneGUI(SceneView view)
    
        Handles.BeginGUI();

6) 哦,对了,后来用回,继承Editor,的OnSceneGUI,根本没成功。。。。。

不知道是不是新版本Unity2020 的问题

7)最终完整代码

SceneView 的GUI,只是和普通 OnGui()略有不同,GUILayout, EditorGUILayout这些帮助类,只能少用了

// copyright (c) by Sidney9111@gmail.com

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class LolToolsWindows : EditorWindow

    [MenuItem("Tools/Lol/Animation Window")]
    public static  void ShowWnd()
    
        GetWindow<LolToolsWindows>().Show();
    

    void OnEnable()
    
        SceneView.duringSceneGui += SceneGUI;
        
    

    private void OnGUI()
    
        if (GUILayout.Button(("创建 Animation in Scene")))
        
            var go = GameObject.Find("LolSceneView");
            if (go == null)
            
                go = new GameObject("LolSceneView");
            

            if (go.GetComponent<LolSceneMono>() == false)
            
                go.AddComponent<LolSceneMono>();
            

            Selection.activeObject = go;
        
    

    void OnDisable()
    
        SceneView.duringSceneGui -= SceneGUI;
    

    void SceneGUI(SceneView view)
    
        //c参考:https://zhuanlan.zhihu.com/p/124269658
        Handles.BeginGUI();
        GUILayout.BeginArea(view.position); // 规定显示区域为屏幕大小
        if (GUILayout.Button("fdsafadsf"))
        
            
        
        GUI.Button(new Rect(10,10,100,100),"11111111");
        
        GUILayout.EndArea();
        Handles.EndGUI();
    
    
    



参考:

unity Scene View扩展之显示常驻GUI - 知乎

以上是关于Editor编辑器扩展在Scene View添加按钮和logo的主要内容,如果未能解决你的问题,请参考以下文章

Unity扩展编辑器三

Add an Editor to a Detail View 将编辑器添加到详细信息视图

如何从sks文件加载节点,然后应用在Scene Editor中定义的操作

Unity Amplify Shader Editor-编辑器扩展开发Canvas框架

UnityEidtor编辑器扩展分享一个BuildSetting Scene场景排序方法

foxit pdf editor怎么编辑文字