学习了下自定义检视面板的使用,效果图如下:
先是定义一个脚本文件,我们来修饰它的检视面板:
[HelpURL("http://www.baidu.com")] public class Atr : MonoBehaviour { public int id; public string Name; [Multiline(5)] public string BackStory; public float health; public float damage; public float weaponDamagel, weaponDamage2; public string shoeName; public int shoeSize; public string shoeType; [Space(100)] [Range(-2,5)] public int time; void Start () { health = 50; } }
然后在根目录的Editor文件夹下定义一个用来修饰上面脚本检视面板的类文件:
using UnityEngine; using System.Collections; using UnityEditor; [CustomEditor(typeof(Atr))] //需要继承自editor,并且引入UnityEditor程序集 public class LearnInspector : Editor { private Atr atr; private bool showWeapons; void OnEnable() { //获取当前自定义的Inspector对象 atr = (Atr) target; } //执行该函数来自定义检视面板 public override void OnInspectorGUI() { //不写默认是垂直布局 EditorGUILayout.BeginVertical(); //空格 EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Base Info"); atr.id = EditorGUILayout.IntField("Atr ID", atr.id); atr.Name = EditorGUILayout.TextField("Atr Name", atr.Name); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Back Story"); atr.BackStory = EditorGUILayout.TextArea(atr.BackStory, GUILayout.MinHeight(100)); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); atr.health = EditorGUILayout.Slider("Health", atr.health, 0, 100); if (atr.health < 20) { GUI.color = Color.red; } else if (atr.health>80) { GUI.color = Color.green; } else { GUI.color = Color.grey; } Rect progressRect = GUILayoutUtility.GetRect(50, 50); EditorGUI.ProgressBar(progressRect,atr.health/100.0f,"Health"); GUI.color = Color.white; EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); atr.damage = EditorGUILayout.Slider("Damage", atr.damage, 0, 20); if(atr.damage<10) { EditorGUILayout.HelpBox("伤害过低",MessageType.Error); } else if (atr.damage > 15) { EditorGUILayout.HelpBox("伤害过高",MessageType.Warning); } else { EditorGUILayout.HelpBox("伤害适中",MessageType.Info); } EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Shoe"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Name", GUILayout.MaxWidth(50)); atr.shoeName = EditorGUILayout.TextField(atr.shoeName); EditorGUILayout.LabelField("Size", GUILayout.MaxWidth(50)); atr.shoeSize = EditorGUILayout.IntField(atr.shoeSize); EditorGUILayout.LabelField("Type", GUILayout.MaxWidth(50)); atr.shoeType = EditorGUILayout.TextField(atr.shoeType); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } } //绘制字段用到的方法 //EditorGUILayout.LabelField()标签字段 //EditorGUILayout.IntField() 整数字段 //EditorGUILayout.FloatField() 浮点数字段 //EditorGUILayout.TextField() 文本字段 //EditorGUILayout.Vector2Field() 二维向量字段 //EditorGUILayout.Vector3Field() 三维向量字段 //EditorGUILayout.Vector4Field() 四维向量字段
可以看出该修饰类和效果图对应的关系。我们可以方便的定义检视面板来协助游戏的开发调试,让它直观的显示出帮助消息。
更多的信息可以查看帮助文档:http://www.ceeger.com/Script/Editor/Editor.html
时间: 2025-01-13 05:07:56