编辑拓展 对空物体进行面板上的编辑 窗口 Slider Tag 文本 枚举

 1.现有物体添加一些属性,这是对灯光 的新添加

结果是这样

 2.给一个空物体添加,写在editor里  要继承Editor  还应用命名空间,

2.1对面板上的不知道那个物体操作 所以引用

2.2 对一个新物体操作,它上边挂了一个脚本,对脚本操作,这里就写他名字:

2.3这哥特性影藏了public出来的东西

2.4按钮的选择

 

2.5材质球的选择,添加图片

 

 2.6手动拖动数字

2.7两种编辑方式,第一种是一张大图片,第二种就是图片上的。可以选择了

2.8 ,窗口坐标

2.9备注信息

替换中文信息

中文写法:

2.7 Slider,是控制他的值,所以控制值就可以创建slider的值,,左边的值是一个变值 从前面那个传过来,才可以移动

 这个限制 没有用,可以不用

2.8  字段我一般用属性去保护 不让其修改

2.7.1血条达到一定的值 然后改变颜色

上边这些,窗口,

第一个脚本

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEditor;
 5 
 6 [CustomEditor(typeof(Manen))]//加入继承操作的文本的特性
 7 
 8 [CanEditMultipleObjects]//操作一个物体编辑的特性
 9 
10 public class CreateMane : Editor {//操作与编辑下的东西 所以要继承编辑类
11     bool isbutten;
12     public override void OnInspectorGUI()
13     {
14         base.OnInspectorGUI();
15 
16         Manen m = (Manen)target;//实例化操作的脚本对象
17         GUILayout.Label("这是新功能");
18 
19 
20         //"BUtten按钮
21         if (GUILayout.Button("BUtten按钮"))
22         {
23             isbutten = !isbutten;//点击了Butten就变成真的
24             m.butten = isbutten;
25         }
26 
27         //图片的操作
28       m.texture=  EditorGUILayout.ObjectField("选择图片", m.texture, typeof(Texture), true) as Texture;//用要操作的脚本接受 就可以对它进行选择了
29 
30 
31         //窗口坐标
32      m.rect=   EditorGUILayout.RectField("窗口坐标", m.rect);
33 
34         //slider 
35         //控制slider是控制它的数字 所以操作数字
36         if (m.num>80&&m.num<100)
37         {
38             GUI.color = Color.green;
39         }
40         if (m.num<80&&m.num>20)
41         {
42             GUI.color = Color.red;
43         }
44         if (m.num<20)
45         {
46             GUI.color = Color.yellow;
47         }
48       m.num=  EditorGUILayout.Slider("血量",m.num,0,100);//名字  最大值 左值 右值;最大值是哥变量, 用操作对象接受 他就可以实现 和里面一样的操作
49 
50     }
51 }
View Code

第二个脚本 

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class Manen : MonoBehaviour {
 6     [HideInInspector]//这个作用是隐藏public出来的东西
 7     public string text;
 8 
 9     //[HideInInspector]
10     public bool butten;//面板上有了一个butten 
11 
12     [HideInInspector]
13     public Texture texture;//选择图片
14 
15     [HideInInspector]
16     public float num;//自由拖动数字
17 
18     //窗口坐标
19     [HideInInspector]
20     public Rect rect;
21 }

 3 Tag的操作

 枚举

上边的颜色影响了下边,重新赋值白色就变回来啦

3.1值的改变:

3.2想要用开关控制值的输入:

3.3操作slide 让其显示血量的高低 然后提示:

,警告,正常,信息

3.4操作一切东西的展开,展开的东西可以是文本 slide ,默认是fase就是不展开

当slider的左值超过100《原本的float的值就变成整数》

 3.5让这个变成一行:

3.5.1

:

 3.6

 3.7文本里东西可以换行输入:

 1 齐培良老师 2018/09/29 11:35:41
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using UnityEngine;
 5 using UnityEditor;
 6 public enum Dir
 7 {
 8     Up,
 9     Down,
10     Left,
11     Right
12 }
13 public class InspectMenu : MonoBehaviour
14 {
15     [HideInInspector]
16     private string text;
17     [HideInInspector]
18     public bool IsButton;
19     [HideInInspector]
20     public Texture texture;
21     [HideInInspector]
22     //[Range(0,100)]//只能在0-100之间
23     public float num;
24     [HideInInspector]
25     public Rect rect;
26 
27     public string Text
28     {
29         get
30         {
31             return text;
32         }
33 
34         set
35         {
36             text = value;
37         }
38     }//一般定义的字段都要属性进行保护
39     [HideInInspector]
40     public Dir dir = Dir.Up;
41     [HideInInspector]
42     public float z1;
43     [HideInInspector]
44     public float z2;
45     [HideInInspector]
46     public float hp;
47 
48     public float C1;
49     public float C2;
50     public float s1;
51     public string con;
52 }
 1 齐培良老师 2018/09/29 11:35:33
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using UnityEngine;
 5 using UnityEditor;
 6 [CustomEditor(typeof(InspectMenu))]
 7 [CanEditMultipleObjects]//操作一个物体编辑的特性
 8 public class InspeactorEditor : Editor
 9 {
10 
11     bool isButton;
12     bool isToggle;
13     bool isOpen;
14     bool isShow;
15     public override void OnInspectorGUI()
16     {
17         base.OnInspectorGUI();
18         InspectMenu ins = (InspectMenu)target;
19         //GUILayout.Label("这是新功能");
20         //if (GUILayout.Button("这是新的按钮"))
21         //{
22         //    isButton = !isButton;
23         //    ins.IsButton = isButton;
24         //}
25         GUILayout.Label("描述");
26       ins.con=  EditorGUILayout.TextArea(ins.con);
27         ins.texture = EditorGUILayout.ObjectField("选择图片", ins.texture, typeof(Texture), true) as Texture;
28         ins.rect = EditorGUILayout.RectField("窗口坐标", ins.rect);
29         ins.Text = EditorGUILayout.TextField("这是一个备注信息", ins.Text);
30         if (ins.num > 80)
31         {
32             GUI.color = Color.green;
33         }
34         if (ins.num > 20 && ins.num < 80)
35         {
36             GUI.color = Color.yellow;
37         }
38         if (ins.num < 20)
39         {
40             GUI.color = Color.red;
41         }
42         ins.num = EditorGUILayout.Slider("血量", ins.num, 0, 100);//ins.num是变值
43         GUI.color = Color.white;
44         isToggle = EditorGUILayout.Toggle("是否开启", isToggle);
45 
46         ins.dir = (Dir)EditorGUILayout.EnumPopup("方向", ins.dir);
47 
48         isOpen = EditorGUILayout.BeginToggleGroup("是否开启输入功能", isOpen);//控制一组数据是否可以输入,都是Begin开始End结束,成对出现
49         ins.z1 = EditorGUILayout.FloatField("值1", ins.z1);
50         ins.z2 = EditorGUILayout.FloatField("值2", ins.z2);
51         EditorGUILayout.EndToggleGroup();
52         ins.hp=  EditorGUILayout.Slider("伤害值",ins.hp,0,60);
53         if (ins.hp<15)
54         {
55             EditorGUILayout.HelpBox("你的伤害值太低了",MessageType.Warning);
56         }
57         if (ins.hp > 45)
58         {
59             EditorGUILayout.HelpBox("你的伤害值太高了", MessageType.Info);
60         }
61         isShow= EditorGUILayout.Foldout(isShow,"是否展开");
62         if (isShow)
63         {
64             ins.C1 = EditorGUILayout.FloatField("值1", ins.C1);
65             ins.C2 = EditorGUILayout.FloatField("值2", ins.C2);
66             ins.s1 = EditorGUILayout.Slider("进度条", ins.s1, 0, 80);
67         }
68         if (GUILayout.Button("人物选择"))
69         {
70             Debug.Log("请选择人物");
71         }
72         EditorGUILayout.BeginHorizontal();
73         if (GUILayout.Button("男一号"))
74         {
75             Debug.Log("男一号");
76         }
77         if (GUILayout.Button("男二号"))
78         {
79             Debug.Log("男二号");
80         }
81         if (GUILayout.Button("男三号"))
82         {
83             Debug.Log("男三号");
84         }
85         EditorGUILayout.EndHorizontal();
86         GUILayout.Label("******以上是编辑器拓展的知识*****");
87 
88 
89     }
90 }
View Code



猜你喜欢

转载自www.cnblogs.com/satanj/p/9722874.html