美文网首页UnityEditorUnity编辑器开发分享插件推荐
Unity插件 Odininspector 使用小记 (一)

Unity插件 Odininspector 使用小记 (一)

作者: amosbake | 来源:发表于2018-02-04 08:20 被阅读304次

    Odin 是目前最牛的编辑器定制化工具,可以轻松完成属性的可视化编辑.

    开始使用

    #if UNITY_EDITOR
    
        using Sirenix.Utilities.Editor;
    
    #endif
    

    基础

    • Title
    • InfoBox
       [Title("Advanced List Customization")]
       [InfoBox("Using [ListDrawerSettings], lists can be customized in a wide variety of ways.")]
    
    • ReadOnly -- 只读属性
     [ReadOnly]
     public int[] ReadOnlyArray2 = new int[] { 1, 2, 3 };
    
    • PropertyOrder 属性展示顺序

      image
    • [TabGroup] 分组显示


      image

    进阶

    • 校验数据有效性


      Valid
      Required

    Array

    • 下拉列表选择


      image
    • Range 支持 array

            [Range(0, 1)]
            public float[] FloatRangeArray;
    
    • 设置列表自动分页
         [ListDrawerSettings(NumberOfItemsPerPage = 5)]
         public int[] FiveItemsPerPage;
    
    屏幕快照 2018-02-04 上午7.40.01.png
    • 为列表项设置标签
    [ListDrawerSettings(ShowIndexLabels = true, ListElementLabelName = "SomeString")]
    
    屏幕快照 2018-02-04 上午7.43.50.png
    • 自定义显示样式和按钮方法
            [ListDrawerSettings(OnBeginListElementGUI = "BeginDrawListElement", OnEndListElementGUI = "EndDrawListElement")]
            public SomeStruct[] InjectListElementGUI;
    
            [ListDrawerSettings(HideAddButton = true, OnTitleBarGUI = "DrawAddButton")]
            public List<int> CustomButtons;
    #if UNITY_EDITOR
    
            private void BeginDrawListElement(int index)
            {
                SirenixEditorGUI.BeginBox(this.InjectListElementGUI[index].SomeString);
            }
    
            private void EndDrawListElement(int index)
            {
                SirenixEditorGUI.EndBox();
            }
    
            private void DrawAddButton()
            {
                if (SirenixEditorGUI.ToolbarButton(EditorIcons.Plus))
                {
                    this.CustomButtons.Add(Random.Range(0, 100));
                }
    
                GUIHelper.PushGUIEnabled(GUI.enabled && this.CustomButtons.Count > 0);
                if (SirenixEditorGUI.ToolbarButton(EditorIcons.Minus))
                {
                    this.CustomButtons.RemoveAt(this.CustomButtons.Count - 1);
                }
                GUIHelper.PopGUIEnabled();
            }
    
    #endif
    
    屏幕快照 2018-02-04 上午8.19.21.png

    相关文章

      网友评论

        本文标题:Unity插件 Odininspector 使用小记 (一)

        本文链接:https://www.haomeiwen.com/subject/jlopzxtx.html