1.19 从0开始学习Unity游戏开发--扩展编辑器

本文详细介绍了如何扩展Unity编辑器,包括添加自定义菜单、利用UnityEditor进行编辑器功能调用以及扩展编辑器界面。通过创建C#脚本实现菜单项,展示了如何在编辑器中创建和使用菜单,以及如何利用AssetDatabase API实现批量操作。此外,文章还讨论了UnityEngin和UnityEditor的区别,并介绍了如何避免打包时出现错误。最后,通过Property Drawers自定义序列化成员的编辑器显示,以更直观的方式编辑Prefab路径。
摘要由CSDN通过智能技术生成

在之前的篇章里面,我们一直在编辑器里面干活,然后做好资源的编辑和代码开发后,我们可以直接在编辑器内点击那个播放按钮就能真实的把游戏跑起来,但是有时候,我们可能希望在菜单里面加个按钮,这样我们可以直接执行一些批量的编辑动作,又或者我们希望像数组元素显示在Inspector面板上的效果一样,为我们的自定义数据结构也画一个特殊的编辑界面,那么这个时候我们就需要扩展Unity编辑器。

给编辑器加个菜单

我们知道Unity编辑器窗口顶部有一系列菜单,我们可以通过编写C#代码来增加我们自定义的菜单,现在我们新建一个脚本资源,叫MenuTest吧,代码如下:

using UnityEditor;
using UnityEngine;

public static class MenuTest
{
    [MenuItem("MenuTest/Say Hello World")]
    public static void SayHelloWorld()
    {
        Debug.Log("Hello World!");
    }
}

可以看到我们新建了一个C#类,但是并不继承自MonoBehaviour,而是直接是纯粹的C#类,写不写成static没关系,但是我们用来作为菜单的方法得是一个static方法,所以我们写了一个SayHelloWorld方法,执行后会输出一行日志到Console窗口中,为了让这个功能在菜单里面出现,我们加了一个属性MenuItem,这个属性来自UnityEditor模块,属性的内容就是我们菜单所在的位置,以/分割,第一部分就是直接显示在界面上的菜单名,后面每个/都是这个菜单内部的选项层级,我们看一下效果:

如果我们点击一下这个菜单,就会执行我们编写的那个static函数,输出一个Hello World!到我们的Console窗口中。

如果我们希望有更深层级的菜单,我们可以写成类似

[MenuItem("MenuTest/Say Hello World/Say1/Say2")]

那么我们就会看到这样的菜单:

OK,我们现在知道了菜单如何制作,这样我们就可以做一些我们想要的批量操作,比如说我们之前给游戏打包的时候,总是要一个个场景打开,然后添加到我们的Build Settings里面,很难受,那我们是不是可以直接通过一个菜单去做这个事情呢?当然可以!我们稍微修改一下我们的代码:

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

public static class MenuTest
{
    [MenuItem("MenuTest/Add All Scenes to Build Settings")]
    public static void AddAllScenesToBuildSettings()
    {
        //获取所有场景
        string[] scenes = AssetDatabase.FindAssets("t:Scene");
        if (scenes == null || scenes.Length == 0)
        {
            Debug.Log("No scenes found.");
            return;
        }

        List<EditorBuildSettingsScene> editorBuildSettingsScenes = new List<EditorBuildSettingsScene>();

        //将所有场景添加到BuildSettings中
        foreach (string sceneGuid in scenes)
        {
            string scenePath = AssetDatabase.GUIDToAssetPath(sceneGuid);
            EditorBuildSettingsScene bu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值