【Unity小知识】Editor编写常用方法汇总

这篇具有很好参考价值的文章主要介绍了【Unity小知识】Editor编写常用方法汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        汇总一些Unity Editor开发的常用方法和实现方式,会持续更新。

添加自定义菜单栏方法

using UnityEngine;
using UnityEditor;

public class EditorTools : EditorWindow
{
    [MenuItem("EditorTools/自定义的编辑器方法")]
    public static void CustomEditroFunction()
    {
        Debug.Log("Here is your code...");
    }
}

【Unity小知识】Editor编写常用方法汇总

如图一,添加自定义的菜单栏需要使用UnityEditor的命名空间,我们自定义的EditorTools类需要继承EditorWindow类。然后就是定义菜单栏点击后所执行的具体函数CustomEditroFunction,这里需要注意的是函数需要是静态函数,需要增加static关键字。MenuItem方法则是定义菜单栏的路径,菜单栏路径可以采用中文。图二则是自定义菜单栏的效果。

EditorWindow类文档连接:https://docs.unity3d.com/cn/2022.2/ScriptReference/EditorWindow.html

添加Project自定义菜单栏方法

using UnityEngine;
using UnityEditor;

public class ProjectEditorTools : EditorWindow
{
    [MenuItem("Assets/自定义的编辑器方法", priority = 0)]
    public static void CustomEditroFunction()
    {
        Debug.Log("Here is your code...");
    }
}

【Unity小知识】Editor编写常用方法汇总【Unity小知识】Editor编写常用方法汇总

在Project窗口添加自定义菜单栏需要MenuItem方法以Assets为起始,自定义的菜单栏也会在顶部菜单栏Assets页签下显示。

添加Hierarchy自定义菜单栏方法

using UnityEngine;
using UnityEditor;

public class HierarchyEditorTools : EditorWindow
{
    [MenuItem("GameObject/自定义的编辑器方法", priority = 0)]
    public static void CustomEditorFunction()
    {
        Debug.Log("Here is your code...");
    }
}

【Unity小知识】Editor编写常用方法汇总【Unity小知识】Editor编写常用方法汇总

 在Hierarchy窗口右键菜单添加自定义菜单栏需要MenuItem方法的路径以GameObject起始,如上面示例代码。添加方法后除了Hierarchy会显示自定义的菜单栏,在顶部GameObject下也会显示自定义的菜单栏。

 MenuItem文档连接:https://docs.unity3d.com/cn/2022.2/ScriptReference/MenuItem.html

添加Inspector中脚本自定义方法

using UnityEngine;
using UnityEngine.UI;
using UnityEditor;

[CustomEditor(typeof(Text), true)]
public class TextEditor : Editor
{
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();
        CustomTextFunction();
    }

    private void CustomTextFunction()
    {
        if (GUILayout.Button("清空内容"))
        {
            Text text = (Text)target;
            text.text = string.Empty;
        }
    }
}

【Unity小知识】Editor编写常用方法汇总

这里我们为Unity原有的Text脚本增加功能按钮,添加自定义功能。

如图一,首先还是需要使用UnityEditor命名空间,自定义类TextEditor继承自Editor。通过覆写OnInspectorGUI方法实现Inspector中脚本的绘制,DrawDefaultInspector为绘制默认视图。接下来CustomTextFunction则是我们自定义的部分,通过GUILayout.Button("清空内容")方法绘制自定义按钮,if语句中则是点击按钮后的自定义功能,这里示例的则是清除了Text内容。实际效果如图二。

在示例代码中需要注意的是,[CustomEditor(typeof(Text), true)]指定了Inspector自定义脚本的类型,会为指定的自定义脚本添加功能。基类Editor包含成员target,通过target可以获取指定的脚本对象。

Editor类文档连接: https://docs.unity3d.com/cn/2022.2/ScriptReference/Editor.html

添加自定义窗口方法

using UnityEngine;
using UnityEditor;

public class CustomEditorWindow :EditorWindow
{
    [MenuItem("EditorTools/CustomEditorWindow")]
    public static void ShowCustomEditorWindow()
    {
        EditorWindow.GetWindowWithRect<CustomEditorWindow>(new Rect(0, 0, 300, 150), false, "CustomEditorWindow");
    }

    private void OnGUI()
    {
    }
}

【Unity小知识】Editor编写常用方法汇总

如图一,这里我们创建了一个最简单的自定义窗口,自定义窗口类需要继承EditorWindow类,通过 EditorWindow.GetWindowWithRect 或者 EditorWindow.GetWindow 方法创建窗口。

EditorWindow.GetWindowWithRect 为创建固定尺寸的窗口。

EditorWindow.GetWindow 为创建动态尺寸的窗口,可以通过拖动右下角拉伸窗口尺寸。

OnGUI 方法用于绘制窗口内的各种组件,下一节将单独讲解。

EditorWindow类文档连接:https://docs.unity3d.com/cn/2022.2/ScriptReference/EditorWindow.html

GUILayout的常用方法

using UnityEngine;
using UnityEditor;

public class CustomEditorWindow : EditorWindow
{
    private string textField = "";
    private string textArea = "";

    [MenuItem("EditorTools/CustomEditorWindow")]
    public static void ShowCustomEditorWindow()
    {
        EditorWindow.GetWindowWithRect<CustomEditorWindow>(new Rect(0, 0, 300, 150), false, "CustomEditorWindow");
    }

    private void OnGUI()
    {
        GUILayout.Label("Hello World");
        textField = GUILayout.TextField(textField);
        textArea = GUILayout.TextArea(textArea);
        if (GUILayout.Button("点击按钮"))
        {
            Debug.LogError("按钮点击响应成功");
        }

    }
}

【Unity小知识】Editor编写常用方法汇总

 这里我们来介绍一下GUILayout常用的方法。

GUILayout.Label:用于创建文本内容,支持多行显示,使用\n或者@“”等方式可以多行显示。

GUILayout.TextField:创建一个可编辑的单行文本框,到达最大长度后输入内容会超框。如图一需要创建一个成员变量存储输入内容。

GUILayout.TextArea:创建一个可编辑的多行文本框,到达最大长度后文本框会换行。同样输入内容需要成员变量存储。

GUILayout.Button:创建一个单击按钮,需要用if语句判断点击。按钮支持图片形式,可传入一个Texture类对象创建图片按钮。

using UnityEngine;
using UnityEditor;

public class HorizontalGUI : EditorWindow
{
    [MenuItem("EditorTools/HorizontalGUI")]
    public static void HorizontalGUIEnum()
    {
        EditorWindow.GetWindowWithRect<HorizontalGUI>(new Rect(0, 0, 500, 50), false, "HorizontalGUI");
    }

    private void OnGUI()
    {
        GUILayout.BeginHorizontal();

        if (GUILayout.Button("按钮1"))
        {
        }

        if (GUILayout.Button("按钮2"))
        {
        }

        GUILayout.Label("文本显示:一二三四五");

        GUILayout.EndHorizontal();
    }
}

【Unity小知识】Editor编写常用方法汇总

GUILayout.BeginHorizontal:开始一个水平控件组,可将多个控件放在同一行。

GUILayout.EndHorizontal:结束一个水平控件组,BeginHorizontal的配套结束方法。

未完待续。

关于GUILayout更多细节可以查阅官方文档。

GUILayout类文档连接:https://docs.unity3d.com/cn/2022.2/ScriptReference/GUILayout.html

EditorUtility的常用方法

EditorUtility.OpenFilePanel:显示“打开文件”对话框并返回所选的路径名称。

EditorUtility.OpenFolderPanel:显示“打开文件夹”对话框并返回所选的路径名称。

EditorUtility.RevealInFinder:打开指定目录文件夹

EditorUtility类文档连接:https://docs.unity3d.com/cn/2022.2/ScriptReference/EditorUtility.html文章来源地址https://www.toymoban.com/news/detail-450715.html

到了这里,关于【Unity小知识】Editor编写常用方法汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity引擎技术整合】 Unity学习路线 | 知识汇总 | 持续更新 | 保持乐趣 | 共同成长

    前言 本文对 Unity引擎 的知识进行了一个整理总结,基本包含了Unity中大部分的知识介绍。 网上也有很多Unity相关的学习资料,但大多数都不成体系,学起来的时候难免会东奔西走的摸不着头脑。 本文整理的多数文章都是有对应的 系列性文章专栏 ,可以更方便的进行系统学习

    2024年02月03日
    浏览(45)
  • Selenium常用元素定位方法汇总

    目录 一、webdriver定位方法 1、xpath基本定位用法 2、xpath相对路径/绝对路径定位 3、xpath文本、模糊、逻辑定位 1、 id 定位 2、 name定位 3、 class定位 4、 link定位 --精准定位 5、 partial_link定位 --模糊定位 6、 tag_name定位 --标签名定位 找到页面上所有标签名为input的标签,返回一个列

    2024年02月02日
    浏览(36)
  • JavaScript中数组常用方法汇总!

    数组是一个复杂数据类型,我们在操作它的时候就不能再想基本数据类型一样操作了。 比如我们想改变一个数组 这样肯定是不合理,因为这样不是在改变之前的数组。相当于重新制作了一个数组给到 arr 这个变量了,相当于把 arr 里面存储的地址给换了,也就是把存储空间换

    2024年02月17日
    浏览(28)
  • HuTool工具类常用方法汇总

    文档地址 引入需要依赖 1、DateUtil: 日期时间工具类 1.1、Date、long、calendar之间的相互转换 1.2、字符串转日期 1.3、格式化日期输出 1.4、获取Date对象的某个部分 1.5、开始时间和结束时间(可以按日、按周、按月) 1.6、日期时间偏移 针对当前时间、提供了简化的偏移方法(例如,

    2024年02月01日
    浏览(40)
  • Vue常用方法汇总【更新中】

    https://blog.csdn.net/weixin_43721000/article/details/125017785 https://blog.csdn.net/weixin_43721000/article/details/125527254 https://blog.csdn.net/weixin_43721000/article/details/123684151 https://blog.csdn.net/weixin_43721000/article/details/128629382 https://blog.csdn.net/weixin_43721000/article/details/127926450 https://blog.csdn.net/weixin_43721000/ar

    2023年04月21日
    浏览(19)
  • ADB安装方法及常用命令汇总

    ADB即 Android Debug Bridge ,起到调试桥的作用,使用ADB可以用电脑快速对手机进行调试,如安装APK、push文件等。 电脑中必须安装有Java环境,才能使用ADB。获取ADB安装包的方式有两种: 方式一 ADB包含在 Android SDK 平台工具软件包中。可以直接使用 SDK 管理器下载ADB的软件包,该管

    2024年02月15日
    浏览(29)
  • 常用字符串处理方法汇总--Pandas

    字符串处理只能在Series上进行,不可以在DataFrame上操作,只能对字符串进行处理,不能对整数、日期进行处理 1.1.1 函数功能 统计Series中每个元素中包含pat的次数 1.1.2 函数语法 1.1.3 函数参数 参数 含义 pat 表达式 1.2.1 函数功能 统计Series中每个元素的长度 1.2.2 函数语法 2.1.1 函

    2024年02月12日
    浏览(37)
  • 数据挖掘七种常用的方法汇总

    数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。这个定义包括几层含义:数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的

    2024年02月14日
    浏览(70)
  • 计算机视觉图像处理常用方法汇总

    光线进入眼睛:当光线从一个物体反射或散射出来,进入人的眼睛时,它们通过角膜和晶状体进入眼球内部。 聚焦光线:角膜和晶状体将光线聚焦在视网膜上。晶状体可以通过调整其形状来调节聚焦距离,使物体的图像清晰地映射在视网膜上。 光敏细胞感受光线:视网膜是

    2024年02月07日
    浏览(37)
  • Java-String类常用方法汇总

    2023年04月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包