当前位置:   article > 正文

Unity编辑器高能插件:Editor ToolBox

unity编辑脚本插件

ae0a32344d0de9dedbc7021e3ea24df8.png

点击蓝字关注我哦

84c47f6e9194adc41905adf69ddec504.png

78d39dc41057f774458145b2ada3b91a.png

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

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

0fcf81f8c57c2b711dd111772bc7a4bb.gif

Editor ToolBox

从哪里下载?

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

如何使用?

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

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

我用的unity版本是:2020.3.18

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

978ef1ac969b05985a86beba6d188de4.png

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

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

cc4d0561c62bf3b59ccf533e2b74af48.png

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

acdf3c5895130ba9ea56d1c7a98b3e98.png

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

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

9945669c34b09dc4bb70bad1c0d87024.png

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

4a56bf065513c6445fd71d3c15e59147.jpeg

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

205c1ead8999d79f59f6f026c84c8a86.png

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

dbc3eb1fc5108388254f4159f0317b3c.png

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

e0b638a19e8a5755ceef699ac518a33c.png

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

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

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

cf6b9eac422deb3146836a0a6cb7e3fd.png

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

ebd6f93b3c3691fb02051a985c06644e.png

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

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

5eea66ca285809911a5798f2323e5aee.png

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

5bbdaa9fea940c7f31a18fa957d3d9f7.png

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

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

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

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

81ccf7255dfee90e18fd1797fe3a7b43.png

 我们看看string类型:

  1. //限制此类型只能获取 Toogle名 
  2.     [TagSelector]
  3.     public string TagName;
  4.     //密码类型
  5.     [Password]
  6.     public string Password;

在检视面板中如下:

3ea89384320eb0c91c2815366f7ec5f8.png

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

这就把工作变得非常简单了76f0706260cb0974feea527ba0ddc79c.png

下面是数值的调整:

  1. //滑动条,默认最小值是0,最大值是100   颜色只支持16进制描述
  2.     [ProgressBar("滑动条", minValue: 0.0f, maxValue: 99.0f, HexColor = "#314D79")]
  3.     public float progressBar = 80;
  4.     //二维向量的可视化调整
  5.     [MinMaxSlider (0,100)]
  6.     public Vector2 V2Value;

效果如下:

8ba2dd5e088ba7fd850cd96c7633fb2b.png

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

  1. //模型可视化 默认大小是64*64 且useLabel = true 
  2.     [AssetPreview(128,128,true )]
  3.     public GameObject Go1;
  4.     [AssetPreview(useLabel: true )]
  5.     public GameObject Go2; 
  6.     [InLineEditor(true,false)]
  7.     public GameObject Go3;

 以下就是效果:

a172067305a92581d3d3e81ec931c360.png

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

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

a1613404e9e9986f45e575f90e046be5.png

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

  1. //枚举
  2.     [EnumToggles]
  3.     public FlagExample enumFlag = FlagExample.Flag1 | FlagExample.Flag2 ;
  4.     [System.Flags]
  5.     public enum FlagExample
  6.     {
  7.         Nothing = 0,
  8.         Flag1 = 1,
  9.         Flag2 = 2,
  10.         Flag3 = 4,
  11.         Flag4 = 8,
  12.         Flag5 = 16,
  13.         Flag6 = 32,
  14.         Flag7 = 64,
  15.         Flag8 = 128,
  16.         Flag9 = 256,
  17.         Everything = ~0,
  18.     }

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

9417a1d23241e1cdc7c4dbb982f14e91.png

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

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

  1. [Label("Directory", skinStyle: SkinStyle.Box)]
  2.     [Directory]
  3.     public string directory;
  4.     [Label("Scene Name", skinStyle: SkinStyle.Box)]
  5.     [SceneName]
  6.     public string sceneName;

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

4858b65806101103bdac967e20eb8d3d.png

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

  1. //空白的大小
  2. [SpaceArea(2020)]
  3. //标题
  4. [Title ("标题")]
  5. //画一条横线    
  6. [Line(HexColor = "#9800FF")]

cfde2d4ee837f95ad6f71d3c3ca73981.png

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

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

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

b9ed63dfb73bd95e72d6b51cb5edb899.png

学以致用 一步起飞


…END…

f70d34332b87fc86a0b45686133387c5.png

-

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/115347?site
推荐阅读
相关标签
  

闽ICP备14008679号