zoukankan      html  css  js  c++  java
  • UnityEditor学习笔记一


    学习文章

    Unity3D之Editor扩展学习(非常棒)


    Build-in Attribute

    十分有用的API:
    RequireComponent
    Header:添加属性标题
    Multilines:多行Text
    Space:空行
    Tooltip:属性备注

    其余:
    HelpURL
    AddComponentMenu
    ContextMenu:允许添加一个命令到该组件上,你可以通过右键或者点击设置图标来调用到它(一般用于函数),且是在非运行状态下执行该函数

    自定义 Inspector 面板

    Editor + OnInspectorGUI()

    OnInspectorGUI主要是用于Editor扩展某一个脚本的Inspector窗口。

    布局API

    XXHorizontal
    XXScrollView
    XXToggleGroup
    XXVertical
    XXFadeGroup

    XXField

    Field翻译成明显更合适

    BoundsField:边界框
    ColorField:用于选择颜色,比如Material的选择颜色域
    CurveField:制作用于编辑动画的曲线
    DealyedXXField:敲击Enter后才显示
    Int/FloatField:整数/浮点数
    LabelField:制作一个标签(通常用于显示只读信息)
    LayerField:返回用户选择的层(就是常见的那个Layer)
    PasswordField
    PropertyField:制作一个用于SerializedProperty的属性字段(见下)
    RectField:矩阵,和Bounds不同,规定了内部的大小
    TagField
    TextField
    EnumFlagsField:枚举
    Vector2/3/4Field:向量,通常是坐标值或四元数值
    ObjectField

    Make an object field. You can assign objects either by drag'n drop objects or by selecting an object using the Object Picker.Ensure that the allowSceneObjects parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a scene.If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a scene object.

    其他

    Popup:弹出选择菜单
    Foldout:通常用于创建树或类似的文件夹结构,如果父物体折叠打开,才显示子物体
    InspectorTitlebar:制作一个检视面板的标题栏
    Slider
    MinMaxSlider
    SelectableLabel:制作一个可选择标签字段
    PrefixLabel:制作一个在某些控件前面的标签
    Space:在上一个控件和跟随的控件之间,制作一个小的空距
    Toggle
    HelpBox:提示框,i/w/e等属性
    DropdownButton:制作一个点击后可以下拉内容的按钮

    OnSceneGUI 待补充

    Lets the Editor handle an event in the scene view.
    属于Messages Sent属性

    自定义窗口

    自定义窗口使用的绝大多数API仍与上面的类似,就是GUI GUILayout EditorGUI EditorGUILayout等等。具体的可以查看官网。

    GUI 和 GUILayout 的使用区别就是能否精确控制,后者是自动布局,而前者是自主布局。至于有没有加Editor的区别,主要就是没加的可以操作Scene窗口,而有加的不行;但是两者都可以Advance Editor。对于我这个月要做的项目来说,有涉及到控制Scene界面的功能,需要注意。

    EditorWindow + OnGUI()

    对于案例里的自定义窗口,主要就是需要继承一个EditorWindow类,这个类可以创建浮动于整个编辑器的窗口。通常搭配的是OnGUI()来进行排版。

    ScriptableWizard

    另外,有一个比较少见但似乎很好用的,类似EditorWindow的类:ScriptableWizard。介绍如下:

    继承自EditorWindow。主要用来做向导。有2个按钮,一个是Create,另一个是Other,有兴趣的朋友可以看参考文章
    OnWizardUpdate OnWizardCreate OnWizardOtherButton
    优点:有定制功能,并且永远处于最上层显示
    如果有EditorWindow想要最上层显示的话,把继承EditorWindow直接换成ScriptableWizard,把 MyWinClass window = (MyWinClass)EditorWindow.GetWindow (typeof(MyWinClass)); 替换为 ScriptableWizard.DisplayWizard<MyWinClass>("Title");
    即可。

  • 相关阅读:
    vue:自定义指令
    vue 声明周期
    组件之间的通信
    vue动态组件keepalive
    vuecli的使用
    数据结构线性表(C#) 天高地厚
    HOOK钩子函数 天高地厚
    OSI模型 天高地厚
    HTTP 天高地厚
    说说JSONP 天高地厚
  • 原文地址:https://www.cnblogs.com/ChanWunsam/p/10018335.html
Copyright © 2011-2022 走看看