美文网首页
自定义Inspector绘制默认Scrip栏怎么绘制

自定义Inspector绘制默认Scrip栏怎么绘制

作者: Boyce_Lig | 来源:发表于2022-07-11 14:14 被阅读0次

这是一个关于强迫症的故事。Unity中如果没有自定义脚本的Inspector,就会默认绘制出一个,不可编辑的脚本对应选取框。

image.png
这给制作期间带来了便利的操作,可以很方便的修改。
但是在自定义inspector面板时候有个方法可以直接绘制this.DrawMonoScript();
但是我想在EditorWindow下也想加上这个,该怎么办呢?
所以看一下源码:
public abstract class BaseEditor : Editor
{
    protected SerializedObject serializedTarget;
    protected Object           monoScript;


    protected virtual void OnEnable()
    {
        this.serializedTarget = new SerializedObject(this.target);
        this.monoScript       = MonoScript.FromMonoBehaviour(this.target as MonoBehaviour);
    }


    protected void DrawMonoScript()
    {
        EditorGUI.BeginDisabledGroup(true);
        EditorGUILayout.ObjectField("Script",   this.monoScript, typeof(MonoScript), false);
        EditorGUI.EndDisabledGroup();
    }
}

首先,我们需要知道mono的脚本,其实是一个MonoScript类型的Asset,这个类型直接继承TextAsset,作为文本文件载入的。

其次,MonoScript.FromMonoBehaviour这个函数能够通过MonoBehaviour对象,找到MonoScript对象。

最后,EditorGUILayout.ObjectField方法能够绘制,一个Asset的选择框。默认选择的Project视图里的文件,就是第二个参数。

有些坑的是,禁用一个控件状态的函数,并不在EditorGUILayout里面,而是在EditorGUI里。BeginDisabledGroup 和 EndDisabledGroup。

因为EditorWindow他不是MonoBehaviour,所以我发现他有另一个方法MonoScript.FromScriptableObject。所以直接可以获得。

增加以下代码就可以啦

MonoScript monoScript;

    private void OnEnable()
    {
        monoScript = MonoScript.FromScriptableObject(this);
    }

    private void OnGUI()
    {        
        EditorGUI.BeginDisabledGroup(true);
        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("Script:", GUILayout.Width(40));
        EditorGUILayout.ObjectField(monoScript, typeof(MonoScript), false);
        EditorGUILayout.EndHorizontal();
        EditorGUI.EndDisabledGroup();
        GUILayout.Space(10);
    }
image.png

参考链接:「Unity3D」(1)自定义Inspector绘制默认Script_scottcgi的博客-CSDN博客

相关文章

  • 自定义Inspector绘制默认Scrip栏怎么绘制

    这是一个关于强迫症的故事。Unity中如果没有自定义脚本的Inspector,就会默认绘制出一个,不可编辑的脚本对...

  • 仿知乎广告

    仿知乎的广告栏学习 思路自定义View 继承自imgView然后通过canvas 对图片进行局部绘制进行局部的绘制...

  • 自定义绘制1-1

    自定义绘制概述 方法:重写绘制方法(最常用:onDraw()) 绘制的关键:CanvasCanvas的绘制类方法:...

  • 自定义View-基础

    自定义绘制 自定义绘制的方式是重写绘制方法,其中最常用的是 onDraw() 绘制的关键是 Canvas 的使用C...

  • Odin Inspector 系列教程 --- Dictiona

    Dictionary Drawer Settings 自定义字典绘制方式 默认以左侧为key,右侧为value 的...

  • 「Unity3D」(12)EditorWindow使用Scrip

    通常绘制EditorWindow需要手动一个个手动绘制控件和布局,但是联想到Inspector可以根据Serial...

  • 01_UI绘制流程及原理

    ===============ui绘制 测量: 布局: 绘制 总结 测量: 自定义viewgroup onMeas...

  • Android手势解锁自定义View

    Anddroid手势解锁自定义View 测量宽和高,计算绘制的间距 绘制3*3小圆,保存绘制小圆的坐标 绘制手势线...

  • Android 自定义View绘制箭头

    一般顶部栏的返回键都是让UI切图,其实还可以自定义View绘制,本篇就闲来蛋疼绘制一个箭头返回键吧,有Materi...

  • Android 自定义View绘制箭头

    一般顶部栏的返回键都是让UI切图,其实还可以自定义View绘制,本篇就闲来蛋疼绘制一个箭头返回键吧,有Materi...

网友评论

      本文标题:自定义Inspector绘制默认Scrip栏怎么绘制

      本文链接:https://www.haomeiwen.com/subject/rvdnbrtx.html