[Unity]Unity3D编辑器插件扩展和组件扩展
1. 插件扩展
1.1. 命名空间
using UnityEditor;
using UnityEngine; //非必需,常用到
1.2. 使用语法
[MenuItem("Assets/My Test")]
private static void Test()
{
Debug.Log("Hello World!")
}
语法说明
[MenuItem("path $t", Is, Priority)]
private static void Test1()
{}
[MenuItem("path _t", Is, Priority)]
private static void Test2()
{}
- path 是菜单路径;
- 一级菜单名称不支持中文
- $t 是一个快捷键实例,在路径后面接空格,然后加上快捷键表示,单纯的一个按键快捷键按键字符前带下划线。该项非必需
%表示ctrl#表示shift&表示alt
- Is 设置为true的时候,如果没有选中游戏对象,会显示不可用状态,该选项非必需
- Priority 是优先级,数值越小优先级越高,非必需,其默认值为1000。
下面表示快捷键为"ctrl+h" 的实例。
[MenuItem("Assets/My Test %h")]
private static void Test()
{
Debug.Log("Hello World!")
}
1.3. Selection类
https://docs.unity3d.com/ScriptReference/Selection.html
1.3.1. 获取选中物体
Selection.Objects可以获得选中的物品。
1.3.2. 获取选中目录
string[] guids = Selection.assetGUIDs;
foreach ( var id in guids )
{
string path = AssetDatabase.GUIDToAssetPath(id);
if(Directory.Exists(path))
{
Debug.Log(string.format("Directory {0} exist", path))
}
}
1.4. 给控件添加右上角齿轮菜单增加功能
[MenuItem("CONTEXT/Rigidbody/wyg_test")]
private static TestRightButton()
{
Debug.Log("右键测试")
}
- CONTEXT 为固定写法;
- Rigidbody 是控件名称,可以修改为其他控件;
- 我使用中文的时候不知道为什么没有显示出来。


1.5. 弹窗
编辑器的弹窗类需要继承EditorWindow。
使用方法与GUI的使用方法基本一致,有Init,Awake,OnGUI等函数。
class TestWindow : EditorWindow
{
public void Init()
{
}
publick void OnGUI()
{
GUILayout.Label("Test Window");
if (GUILayout.Button("Button"))
{
Debug.Log("On Button")
}
}
}
2. 组件属性展示
以下效果都是组件的显示,所以是属于using UnityEngine;的。
2.1. Range
可以将数值的展示效果变成滑动条效果。
[Range(1, 12)]
public int month;


2.2. Multiline/TextArea
控制占用多行显示。
[Multiline(5)]
public string msg1;
[TextArea(3,5)]
public string msg2; // 最少显示三行,最多显示五行


2.3. ContextMenuItem/ContextMenu
添加右键小菜单,添加一些小功能。
[ContextMenuItem("Random", "RandomNumber")]
[ContextMenuItem("Reset", "ResetNumber")]
public int number;
void RandomNumber()
{
number = Random.Range(0, 100);
}
void ResetNumber()
{
number = 0;
}


还有一个ContextMenu的特性,用法类似。
public string Name;
[ContextMenu("Reset Name")]
private void ResetName()
{
Name = "";
}


2.4. ColorUsage
设置颜色选择器。
public Color color1;
[ColorUsage(false)]
public Color color2; // 没有alpha
[ColorUsage(true, true, 0, 8, 0.125f, 3)]
public Color color3; // HDR
[Unity]Unity3D编辑器插件扩展和组件扩展的更多相关文章
- Unity3D编辑器扩展(四)——扩展自己的组件
前面已经写了三篇: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)——使用GUI绘制窗口 今天写第四篇,扩展自己 ...
- Unity3D编辑器扩展(六)——模态窗口
前面我们已经写了5篇关于编辑器的,这是第六篇,也是最后一篇: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)—— ...
- Unity3D编辑器扩展(五)——常用特性(Attribute)以及Selection类
前面写了四篇关于编辑器的: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)——使用GUI绘制窗口 Unity3D ...
- Unity 3D编辑器扩展介绍、教程(二) —— 创建窗口
Unity编辑器扩展教程(二) 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introd ...
- 百度umeditor富文本编辑器插件扩展
富文本编辑器在WEB开发中经常用到,个人比较喜欢用百度出的ueditor这款,ueditor这款本身支持插件扩展的,但是ueditor的mini版本 umeditor 就没有那么方便了,不过找了很多资 ...
- 扩展Unity3D编辑器的脚本模板
近期在学习Shader时感觉Shader语言參数众多.语法诡异,假设每次都从头開始写Shader一定是一件痛苦的事情.假设能够在本地定义好一组标准的Shader模板,这样当我们须要实现某些效果相似 ...
- 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)
背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...
- .NET平台开源项目速览(5)深入使用与扩展SharpConfig组件
上个月在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和 .NET平台开源项目速览(1)SharpConfig配置文件读写组件 中都提到了SharpConfig组件,简单轻量级 ...
- Java高并发 -- J.U.C.组件扩展
Java高并发 -- J.U.C.组件扩展 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 FutureTask Future模式,核心思想是异步调用.和同步调用的区别 ...
随机推荐
- c# HttpWebRequest 模拟HTTP post 传递JSON参数
//HTTP post JSON 参数 private string HttpPost(string Url, Object ticket) { ...
- Run Logic
1.lr_output_message()函数,其作用是将内容输出到Replay Log中: 如果输出整数型内容,应该这样写; int x; x=10; lr_output_message(" ...
- unity(Exploder插件)研究
哎 好久没写博客了 不是因为最近忙 而是比较懒 学的东西不深入 前段时间发现一个很好用的插件叫Exploder(是一个可以制作任何物体的爆炸效果) 好!我们开始我们的炸学校旅程!(O(∩_∩)O哈哈~ ...
- 团队作业4--第一次项目冲刺(Alpha版本)6
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.对功能界面进行优化 2.对算法进行改进优化,提高运行速度 四.困难与问题 首先我们团队通过讨论,对功能界面进行了优化,让界 ...
- Java计算器1.0版
此版本只是设计了页面,还没有实现事件监听 代码: package com.niit.javagui; import java.awt.Button; import java.awt.FlowLay ...
- 测试与发布(Alpha版本)
[Alpha阶段]测试报告 1.测试找出的BUG (1).这种情况刷新就好 (2).文件必须10个才行,多余10个的部分不会进入查重的部分,少于会出错: (3).文件保存在d:\files,由于有些原 ...
- 201521123106 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- Java :内部类基础详解
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. public class OuterClass { pr ...
- foreach嵌套循环
最近几天被这个嵌套搞晕了,还好经过几天的努力终于解决了,特记录下,因为要传两个List集合到jsp页面,还都是在一起输出,发现不能把两个集合放在一个foreach,所以就写了两个foreach来接受, ...
- 过度拟合(overfilting)
过拟合概念:是指分类器能够百分之百的正确分类样本数据(训练集中的样本数据),对训练集以外的数据却不能够正确分类. 原因:1:模型(算法)太过复杂,比如神经网络,算法太过精细复杂,规则太过严格,以至于任 ...