unity编辑器扩展开发 unity自带编辑器_unity

unity编辑器扩展开发 unity自带编辑器_编辑器_02

 原生的Unity Editor功能有限,经常会减慢开发者的开发进度.自己开发或者使用这些插件将极大的提升开发效率,为开发者节省更多时间去开发游戏的核心玩法。高效的Unity开发者一般都会有一套属于自己的编辑器偏好,或者自己的编辑器插件.

当然编辑器插件不仅仅是去解决一些重复性的工作,比如自动绑定骨骼,生成json文件等,关于工具类插件之前我也发过关于unity的编辑器扩展:游戏开发中的编辑器扩展  但是不是优化编辑器开发流程的,你该怎么使用unity,还是怎么用.而这篇是介绍一个非常适合程序员和美工一起使用的插件.

unity编辑器扩展开发 unity自带编辑器_开发者_03

Editor ToolBox

从哪里下载?

GitHub地址:https://github.com/arimger/Unity-Editor-Toolbox

如何使用?

下载好了之后直接打开即可,里面有示例.版本的话最好是2019+,因为我看代码中对于unity版本的判断只有2019或更高.

这里,我介绍几个我觉得比较常用的,因为它里面的功能实在是太多,要是都说一遍的话,篇幅会很大.所以我挑了大概十几个比较高能的来介绍一下.

我用的unity版本是:2020.3.18

打开之后你会看到一个比较明显的变化就是如下Hierarchy界面:

unity编辑器扩展开发 unity自带编辑器_编辑器_04

你也许会觉得这个界面不知所以,接下来我慢慢介绍这个Hierarchy中的这几个多出来的东西.

我想先提一个问题,假如你的场景中有很多个类型的模型,那你怎么做分类呢?之前看unity官方的例子中,它有类似这样的做法:

unity编辑器扩展开发 unity自带编辑器_编辑器_05

通过新建一些空物体来分割不同类型的游戏物体.当然,这么做没有任何问题.但是在EditorToobox中有个更美观的做法,就是新建一个空物体,然后命名为:#h+Name,就会在Hierarchy面板中呈现这样的一整条:

unity编辑器扩展开发 unity自带编辑器_编辑器_06

相对于之前的----------Name-----------要美观的不少.

接下来是带有脚本图标的,这个功能是当鼠标悬浮在上方的时候,会罗列出当前物体上挂载的组件.

unity编辑器扩展开发 unity自带编辑器_unity编辑器扩展开发_07

值得注意的是,它默认图标就是脚本图标,鼠标悬浮上去才会显示,所有的组件.我新建一个cube,挂上刚体:

unity编辑器扩展开发 unity自带编辑器_unity编辑器扩展开发_08

那么,鼠标悬浮上去就会显示这样:

unity编辑器扩展开发 unity自带编辑器_unity编辑器扩展开发_09

它旁边的小方块里,显示的是该物体的层级,如果层级的名字太长,就会直接显示层级的排列序号:

unity编辑器扩展开发 unity自带编辑器_游戏引擎_10

那么在旁边的比较长的是Tag值

unity编辑器扩展开发 unity自带编辑器_unity编辑器扩展开发_11

第四列的复选框用的频率最多,是设置物体是否启用,如果取消勾选那么此物体的active就是false. 

最后一列就是这个游戏物体的icon.

你也许会发现,如果hierarchy设置的太窄就不好用了,信息看不全,应该设置成下方这样

unity编辑器扩展开发 unity自带编辑器_编辑器_12

我一般使用2 by 3 的布局习惯了,所以我改造了一下,就保留了设置Active和显示图标的功能.

unity编辑器扩展开发 unity自带编辑器_unity_13

如果你也想改的话,控制这段代码在 HierarchyPropertyLabel.cs 这个脚本中.

如果你都不想看到hierarchy里面被修改,也有办法直接隐藏,在Asset文件夹中EditorToolBox中有个EditorSettings文件,取消里面的Use Toolbo Hierarchy 即可:

unity编辑器扩展开发 unity自带编辑器_开发者_14

如果你够聪明,应该能发现下面的Project是干啥的,没错,这个就是修改文件夹的图标的,你可以将图片和文件夹一起显示出来,就像toolbox文件夹一样:

unity编辑器扩展开发 unity自带编辑器_开发者_15

好的,最简单的功能介绍完了,下面就是对于脚本的一些美观的优化. 将用法一一罗列出来.

我们新建一个脚本,名称随便,然后不需要特殊的引用什么头文件,直接在脚本上写:

using UnityEngine;
[ExecuteAlways]
[AddComponentMenu("Editor Toolbox/演示脚本名:例如 角色 信息 全局唯一 ")]
public class Vincent : MonoBehaviour
{

}

如果是先写toolbox代码,只能通过拖拽的方式挂载,你在AddComponent中增加,是找不到名为Vincent的脚本的.那么这么写的效果是什么呢?

unity编辑器扩展开发 unity自带编辑器_unity_16

 我们看看string类型:

//限制此类型只能获取 Toogle名 
    [TagSelector]
    public string TagName;
    //密码类型
    [Password]
    public string Password;

在检视面板中如下:

unity编辑器扩展开发 unity自带编辑器_游戏引擎_17

我们没有写任何其他的代码,仅仅是加了"特性"标签即可 [] 为特性标签.

这就把工作变得非常简单了

unity编辑器扩展开发 unity自带编辑器_unity_18

下面是数值的调整:

//滑动条,默认最小值是0,最大值是100   颜色只支持16进制描述
    [ProgressBar("滑动条", minValue: 0.0f, maxValue: 99.0f, HexColor = "#314D79")]
    public float progressBar = 80;

    //二维向量的可视化调整
    [MinMaxSlider (0,100)]
    public Vector2 V2Value;

效果如下:

unity编辑器扩展开发 unity自带编辑器_unity_19

下面就比较炫酷了,因为这个是模型的预览,可以将场景中的,或者是预制体,在检视面板中直接预览.要是之前的话,我们得先点击某个模型,然后在预览的窗口才可以看到.

//模型可视化 默认大小是64*64 且useLabel = true 
    [AssetPreview(128,128,true )]
    public GameObject Go1;
    [AssetPreview(useLabel: true )]
    public GameObject Go2; 

    [InLineEditor(true,false)]
    public GameObject Go3;

 以下就是效果:

unity编辑器扩展开发 unity自带编辑器_开发者_20

 还有对于某些变量后面加上单位:

//增加后缀 
    [Suffix("kg")]
    public float KG;

unity编辑器扩展开发 unity自带编辑器_unity_21

下面是枚举的可视化,一般的,我们枚举直接暴露出来是不能够多选的.而这里是可以的

//枚举
    [EnumToggles]
    public FlagExample enumFlag = FlagExample.Flag1 | FlagExample.Flag2 ;

    [System.Flags]
    public enum FlagExample
    {
        Nothing = 0,
        Flag1 = 1,
        Flag2 = 2,
        Flag3 = 4,
        Flag4 = 8,
        Flag5 = 16,
        Flag6 = 32,
        Flag7 = 64,
        Flag8 = 128,
        Flag9 = 256,
        Everything = ~0,
    }

在检视面板中可以自由的选择枚举的值:

unity编辑器扩展开发 unity自带编辑器_游戏引擎_22

注意,这里黑色的才算是选中的.

判断文件夹是否存在,以及场景是否在build settings里

[Label("Directory", skinStyle: SkinStyle.Box)]

    [Directory]
    public string directory;

    [Label("Scene Name", skinStyle: SkinStyle.Box)]

    [SceneName]
    public string sceneName;

如果不存在或者为空,就会报警告

unity编辑器扩展开发 unity自带编辑器_编辑器_23

里面的值一定是unity可以查找到的.

//空白的大小
[SpaceArea(20, 20)]
//标题
[Title ("标题")]
//画一条横线    
[Line(HexColor = "#9800FF")]

unity编辑器扩展开发 unity自带编辑器_游戏引擎_24

最后一个需要介绍的是图片的显示:

[ImageArea("https://img.itch.zone/aW1nLzE5Mjc3NzUucG5n/original/Viawjm.png", 180.0f)]

那么,最常用的方法,我就整理到这里.希望大家去支持这个开源插件.毕竟也不是每个人都有钱买odin插件