码迷,mamicode.com
首页 > 编程语言 > 详细

Unity编辑器扩展

时间:2017-11-24 21:38:41      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:ogg   rto   mat   响应   play   组件   static   多选框   new t   

四类
1.  ScriptableObject   只有菜单
2.  ScriptableWizard  向导对话框 简单的输入 响应一下确认按钮
3.  EditorWindow       编辑对话框
4.  Editor                     


绘制ui函数的各种空间
GUI
GUILayout
EditorGUI             Editor下专用的各种控件,动画曲线什么的
EditorGUILayout

ScriptableWizard  
    OnWizardUpdate()
    OnWizardCreate()
    ScriptableWizard.DisplayWizard("Title", typeof(ClassName), "BtnName");
    

EditorWindow    OnInspectorUpdate每帧检查   需要的时候调用 Repaint()
                            OnGUI() 在需要的时候调用

Editor 可以用来自定义某个组件的Inspector编辑界面
               [CustomEditor(typeof(XXX))]
               public class XXXInspector : Editor {
            也可以用来做一些复杂的界面

用一个静态方法打开
    [MenuItem("KingsoftTools/Skill/伤害组件监视")]
    static void Init()
    {
        EditorWindow.GetWindow(typeof(BuffInspector));
    }


 
        Texture2D dataImg = new Texture2D(256, 256);
        绘图。。。 。。。
        一个点一个点设置颜色...
        dataImg.Apply();  //必须调用 apply函数才会改变Texture2D 

EditorPrefs

这个类可以存一些用户的编辑器设置
 m_propertiesNames = EditorPrefs.GetString(string.Format("SplatProp_{0}_{1}", i, j), DefaultPropertiesNames[i, j]);

选择列表 SelectionGrid(选择的索引,列表,每行个数)
                int xCount = Mathf.FloorToInt(position.width / m_ccCellSize);
                m_customColIdx = GUILayout.SelectionGrid(m_customColIdx, m_customColorTex, xCount);
                m_useSaveColor = GUILayout.Toggle(m_useSaveColor, "Use Save Color");
                if (m_useSaveColor)
                {
                    m_colorChannel = m_customColorLst[m_customColIdx];
                }


LayerMask(选择层级,多选框式)
x
 
1
    static LayerMask LayerMaskField(string label, LayerMask layerMask)
2
    {
3
        List<string> layers = new List<string>();
4
        List<int> layerNumbers = new List<int>();
5
6
        for (int i = 0; i < 32; i++)
7
        {
8
            string layerName = LayerMask.LayerToName(i);
9
            if (layerName != "")
10
            {
11
                layers.Add(layerName);
12
                layerNumbers.Add(i);
13
            }
14
        }
15
        int maskWithoutEmpty = 0;
16
        for (int i = 0; i < layerNumbers.Count; i++)
17
        {
18
            if (((1 << layerNumbers[i]) & layerMask.value) > 0)
19
                maskWithoutEmpty |= (1 << i);
20
        }
21
        maskWithoutEmpty = EditorGUILayout.MaskField(label, maskWithoutEmpty, layers.ToArray());
22
        int mask = 0;
23
        for (int i = 0; i < layerNumbers.Count; i++)
24
        {
25
            if ((maskWithoutEmpty & (1 << i)) > 0)
26
                mask |= (1 << layerNumbers[i]);
27
        }
28
        layerMask.value = mask;
29
        return layerMask;
30
    }














Unity编辑器扩展

标签:ogg   rto   mat   响应   play   组件   static   多选框   new t   

原文地址:http://www.cnblogs.com/Hichy/p/7892268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!