初步认识拓展UnityEditor编辑器定制

热度 9529 2015-9-4 18:50 |个人分类:Unity3d编辑器拓展

我相信无数初学者看别人游戏都经常看到他们的Inspector中出现界面和默认不同,但又不知道怎么弄出来的.下面我粗略介绍一下如何自定义这些.
 
MenuItem属性把任意静态函数变成为一个菜单命令。仅静态函数能使用这个MenuItem属性。
 
用法:一般在Editor文件夹里创建代码,代码归类
    [MenuItem("MyMenu/Do Something")]
    void DoSomething()
    {
        Debug.Log("Perform operation");
    }
运行即看到效果

 
[ContextMenu("XXX")]可以向你的上下文菜单中添加一个菜单项。 如下图

 
[ExecuteInEditMode]属性的作用是在EditMode下也可以执行脚本。unity中默认情况下,脚本只有在运行的时候才被执行,加上此属性后,不运行程序,也能执行脚本。可以不运行程序下观察程序效果。
 
AddComponentMenu 添加组件菜单
原本的脚本(组建)都会在“Component/Script”菜单下,在类之前声明一下这个,它便可以出现在"Componet"菜单下的任何位置
 
扩展Inspector面板
通过编译器命令[CustomEditor(typeof(XXX))]即可。
 
访问被编辑的对象
在Inspector视图中,我们经常需要访问正在被编辑的对象。Editor类的成员变量target正是提供了这一关联。
尽管如此,需要注意target是一个Object类型的对象,具体使用时可能需要类型转换(可以使用C#的泛型来避免重复的类型转换)。
实例:
1
2
3
4
5
6
7
8
usingUnityEngine;
usingSystem.Collections;
 
publicclassTest:MonoBehaviour
{
    publicRect mRectValue;
publicTexture texture;
}
 
 
usingUnityEditor;
usingUnityEngine;
 
//自定义Tset脚本
[CustomEditor(typeof(Test))]
//在编辑模式下执行脚本,这里用处不大可以删除。
[ExecuteInEditMode]
//请继承Editor
public class MyEditor:Editor
{
//在这里方法中就可以绘制面板。
    public override void OnInspectorGUI()
{
//得到Test对象
        Test test=(Test)target;
//绘制一个窗口
test.mRectValue=EditorGUILayout.RectField("窗口坐标",
test.mRectValue);
//绘制一个贴图槽
test.texture=  EditorGUILayout.ObjectField("增加一个贴图",test.texture,typeof(Texture),true)asTexture;
 
}
}

  按钮a是如何出现请看下面内容

扩展组件背景菜单

例如添加一个button按钮。

在MyEditor中的OnInspectorGUI中添加下面代码,在Test中添加函数a();
if (GUILayout.Button("a")) {
            test.a();
        }
 
Wizards
创造主观编辑器窗口
[MenuItem("GameObject/Create Other/Explosion")]
public static void CreateExplosion()
{
ScriptableWizard.DisplayWizard(“Create explosion”, "Create", "Apply");
}
效果图大概这样

(转)初步认识拓展UnityEditor编辑器定制的更多相关文章

  1. (转)Unity3d UnityEditor编辑器定制和开发插件

    在阅读本教程之前,你需要对Unity的操作流程有一些基础的认识,并且最好了解内置的GUI系统如何使用. 如何让编辑器运行你的代码 Unity3D可以通过事件触发来执行你的编辑器代码,但是我们需要一些编 ...

  2. 【转载】Unity3d UnityEditor编辑器定制和开发插件

    在阅读本教程之前,你需要对Unity的操作流程有一些基础的认识,并且最好了解内置的GUI系统如何使用. 如何让编辑器运行你的代码 Unity3D可以通过事件触发来执行你的编辑器代码,但是我们需要一些编 ...

  3. Unity3D引擎扩展中的编辑器定制方法

    http://gamerboom.com/archives/36432 作者:Richard Fine Unity3D的方便之处在于,它很容易地扩展编辑器套件.每款游戏都对加工有着不同的需求,可以快速 ...

  4. Unity场景道具模型拓展自定义编辑器

    (一)适用情况 当游戏主角进入特定的场景或者关卡,每个关卡需要加载不同位置的模型,道具等.这些信息需要先在unity编辑器里面配置好,一般由策划干这事,然后把这些位置道具信息保存在文件,当游戏主角进入 ...

  5. 拓展自定义编辑器窗口(EditorGUILayout类)

    Unity支持自行创建窗口,也支持自定义窗口布局.在Project视图中创建一个Editor文件夹,在文件夹中再创建一条脚本. 自定义窗口需要让脚本继承EditorWindow再设置MenuItem, ...

  6. 拓展Unity3D编辑器

    /*** * * 编辑器创建新窗口,并设置窗口布局 * * * * * */ using System.Collections; using System.Collections.Generic; u ...

  7. Unity3D研究院之拓展自定义编辑器窗口

    Unity支持自行创建窗口,也支持自定义窗口布局.在Project视图中创建一个Editor文件夹,在文件夹中在创建一条脚本. 自定义窗口需要让脚本继承EditorWindow在设置MenuItem, ...

  8. unity3d拓展编辑器MenuItem的使用

    MenuItem是自定义菜单栏显示 比如:[MenuItem("new/My Window")] 这样就会显示菜单new/My Window 把这个放在一个静态方法上就可以了.记住 ...

  9. (转)Unity笔记之编辑器(UnityEditor)

    在使用unity3d的过程中,时常会需要从场景中寻找或者调用一个对象,而Unity就提供了一个贴心的功能——拖拽.用鼠标拖一下中比写堆代码直观的多吧!但是Unity提供的远远不止这一丢丢,下面我们来简 ...

随机推荐

  1. convert image to base64

    ylbtech-Unitity-cs:convert image to base64 convert image to base64 1.A,效果图返回顶部   1.B,源代码返回顶部 1.B.1,c ...

  2. centos7 系统管理systemd学习记录

    在centos7之前,系统服务是service,chkconfig等命令来管理的.到了centos7,统一使用systemctl来管理系统服务 其实就是把chkconfig和service结合在一起了 ...

  3. 解决防火墙限制远程连接MySQL(导致错误10060可能之一)

    打开windows防火墙,打开高级设置 1. 入站规则设置 ① 选择入站规则,然后新建规则,选择端口,然后下一步 ② 选择TCP,选择特定端口,然后输入端口,如有多个端口需要用逗号隔开了 例如: 33 ...

  4. perl学习笔记——字符串和排序

    用index查找子字符串 查找子字符串在主字符串中的相对位置.如: $where=index($big,$small); 注意index是从0开始的,如果查找不到就会返回-1: 加入第三个参数来指定开 ...

  5. B6:命令模式 Command

    将一个请求封装成一个对象,从而可以用不同的请求对象对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作. 与状态模式和责任链模式的区别是,命令模式设定一次,统一执行 使用场景:1.可设计一 ...

  6. 小伙子又乱码了吧-Java字符编码原理总结

    前提 配合前面阅读的I/O和NIO的资料,现在总结一下关于字符集和乱码问题的原理和解决方案.参考资料: 码表ASCII Unicode GBK UTF-8 字符编码笔记ASCII,Unicode和UT ...

  7. Django——静态文件配置

    本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...

  8. 应用程序池和应用程序域的区别(Difference between application pool and application domain)

    来自StackOverFlow:  http://stackoverflow.com/questions/8486335/difference-between-an-application-domai ...

  9. 使用 原生js 制作插件 (javaScript音乐播放器)

    1.引用页面 index.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  10. 【高德地图API】从零開始学高德JS API(二)地图控件与插件——測距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

    不管是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发人员使用.降低开发人员工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,相似谷歌 ...