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 }
第二个脚本
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 }