1. 插件扩展

1.1. 命名空间

  1. using UnityEditor;
  2. using UnityEngine; //非必需,常用到

1.2. 使用语法

  1. [MenuItem("Assets/My Test")]
  2. private static void Test()
  3. {
  4. Debug.Log("Hello World!")
  5. }

语法说明

  1. [MenuItem("path $t", Is, Priority)]
  2. private static void Test1()
  3. {}
  4. [MenuItem("path _t", Is, Priority)]
  5. private static void Test2()
  6. {}
  • path 是菜单路径;

    • 一级菜单名称不支持中文
  • $t 是一个快捷键实例,在路径后面接空格,然后加上快捷键表示,单纯的一个按键快捷键按键字符前带下划线。该项非必需
    • % 表示 ctrl
    • # 表示 shift
    • & 表示 alt
  • Is 设置为true的时候,如果没有选中游戏对象,会显示不可用状态,该选项非必需
  • Priority 是优先级,数值越小优先级越高,非必需,其默认值为1000。

下面表示快捷键为"ctrl+h" 的实例。

  1. [MenuItem("Assets/My Test %h")]
  2. private static void Test()
  3. {
  4. Debug.Log("Hello World!")
  5. }

1.3. Selection类

https://docs.unity3d.com/ScriptReference/Selection.html

1.3.1. 获取选中物体

Selection.Objects可以获得选中的物品。

1.3.2. 获取选中目录

  1. string[] guids = Selection.assetGUIDs;
  2. foreach ( var id in guids )
  3. {
  4. string path = AssetDatabase.GUIDToAssetPath(id);
  5. if(Directory.Exists(path))
  6. {
  7. Debug.Log(string.format("Directory {0} exist", path))
  8. }
  9. }

1.4. 给控件添加右上角齿轮菜单增加功能

  1. [MenuItem("CONTEXT/Rigidbody/wyg_test")]
  2. private static TestRightButton()
  3. {
  4. Debug.Log("右键测试")
  5. }
  • CONTEXT 为固定写法;
  • Rigidbody 是控件名称,可以修改为其他控件;
  • 我使用中文的时候不知道为什么没有显示出来。



1.5. 弹窗

编辑器的弹窗类需要继承EditorWindow

使用方法与GUI的使用方法基本一致,有Init,Awake,OnGUI等函数。

  1. class TestWindow : EditorWindow
  2. {
  3. public void Init()
  4. {
  5. }
  6. publick void OnGUI()
  7. {
  8. GUILayout.Label("Test Window");
  9. if (GUILayout.Button("Button"))
  10. {
  11. Debug.Log("On Button")
  12. }
  13. }
  14. }

2. 组件属性展示

以下效果都是组件的显示,所以是属于using UnityEngine;的。

2.1. Range

可以将数值的展示效果变成滑动条效果。

  1. [Range(1, 12)]
  2. public int month;



2.2. Multiline/TextArea

控制占用多行显示。

  1. [Multiline(5)]
  2. public string msg1;
  3. [TextArea(3,5)]
  4. public string msg2; // 最少显示三行,最多显示五行



2.3. ContextMenuItem/ContextMenu

添加右键小菜单,添加一些小功能。

  1. [ContextMenuItem("Random", "RandomNumber")]
  2. [ContextMenuItem("Reset", "ResetNumber")]
  3. public int number;
  4. void RandomNumber()
  5. {
  6. number = Random.Range(0, 100);
  7. }
  8. void ResetNumber()
  9. {
  10. number = 0;
  11. }



还有一个ContextMenu的特性,用法类似。

  1. public string Name;
  2. [ContextMenu("Reset Name")]
  3. private void ResetName()
  4. {
  5. Name = "";
  6. }



2.4. ColorUsage

设置颜色选择器。

  1. public Color color1;
  2. [ColorUsage(false)]
  3. public Color color2; // 没有alpha
  4. [ColorUsage(true, true, 0, 8, 0.125f, 3)]
  5. public Color color3; // HDR

[Unity]Unity3D编辑器插件扩展和组件扩展的更多相关文章

  1. Unity3D编辑器扩展(四)——扩展自己的组件

    前面已经写了三篇: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)——使用GUI绘制窗口 今天写第四篇,扩展自己 ...

  2. Unity3D编辑器扩展(六)——模态窗口

    前面我们已经写了5篇关于编辑器的,这是第六篇,也是最后一篇: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)—— ...

  3. Unity3D编辑器扩展(五)——常用特性(Attribute)以及Selection类

    前面写了四篇关于编辑器的: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)——使用GUI绘制窗口 Unity3D ...

  4. Unity 3D编辑器扩展介绍、教程(二) —— 创建窗口

    Unity编辑器扩展教程(二) 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introd ...

  5. 百度umeditor富文本编辑器插件扩展

    富文本编辑器在WEB开发中经常用到,个人比较喜欢用百度出的ueditor这款,ueditor这款本身支持插件扩展的,但是ueditor的mini版本 umeditor 就没有那么方便了,不过找了很多资 ...

  6. 扩展Unity3D编辑器的脚本模板

      近期在学习Shader时感觉Shader语言參数众多.语法诡异,假设每次都从头開始写Shader一定是一件痛苦的事情.假设能够在本地定义好一组标准的Shader模板,这样当我们须要实现某些效果相似 ...

  7. 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)

    背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...

  8. .NET平台开源项目速览(5)深入使用与扩展SharpConfig组件

    上个月在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧  和 .NET平台开源项目速览(1)SharpConfig配置文件读写组件 中都提到了SharpConfig组件,简单轻量级 ...

  9. Java高并发 -- J.U.C.组件扩展

    Java高并发 -- J.U.C.组件扩展 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 FutureTask Future模式,核心思想是异步调用.和同步调用的区别 ...

随机推荐

  1. HTTP协议知多少-关于http1.x、http2、SPDY的相关知识

    作为网站开发的基础协议,我们知道浏览器上都有输出http这四个字母,这意味着什么呢? 这就是最基础的HTTP协议. 逐浪君今天为各位大人准备了一些HTTP技术的知识,来和大家分享. 以下图为例: 这一 ...

  2. ROS学习记录(一)————创建简单的机器人模型smartcar

    这是我在古月居上找的(http://www.guyuehome.com/243),但直接运行的话,没办法跑起来,我也是查了好多博客和日志,才实现最后的功能的,所以,记录下来,以备后用吧,也欢迎其他和我 ...

  3. 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)

    32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...

  4. 可以用 Python 编程语言做哪些神奇好玩的事情?

    作者:造数科技链接:https://www.zhihu.com/question/21395276/answer/219747752 使用Python绘图 我们先来看看,能画出哪样的图 更强大的是,每 ...

  5. 团队作业8——第二次项目冲刺(Beta阶段)第二天

    BETA阶段冲刺第二天 1.当天站立式会议 2.每个人的工作 (1) 昨天已完成的工作: Alpha阶段的Bug修复 (2) 今天计划完成的工作: 编写前端页面 (3) 工作中遇到的困难: 对于前端页 ...

  6. Beta冲刺前准备

    一.介绍小组新成员,Ta担任的角色. 201421123121 栗海辉 来自Sugar Free 风格:低调中的高调,给你不一样的视觉 擅长的技术:C语言/JAVA 在曾经的团队里面担任主要编程人员, ...

  7. Swing-setMaximumSize()用法-入门

    与setMinimumSize()一同讨论.顾名思义,这两个函数用于设置窗体的最大.最小值.然而测试发现,setMaximumSize()直接作用于JFrame时,无法实现其预定功能,setMinim ...

  8. Java 第七周总结

    1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 我们知道ArrayList是允许重复的,有序的元素的集合,但当我们想用它来放 ...

  9. 201521123022 《Java程序设计》 第九周学习总结

    1.本章学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 Q1.1 截图你的提交结果(出现学号) Q1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何 ...

  10. 201521123026《Java程序设》 第10周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 1.守护线程:setDaemon(true or false),如果所有前台线程死亡,守护线程自动结束,一般 ...