Unity Editor 学习(二)自定义Inspector面板

  • 设置界面垂直布局:
  1. EditorGUILayout.BeginVertical(); 

  2. EditorGUILayout.EndVertical();

  • 设置界面水平布局:
  1. EditorGUILayout.BeginHorizontal(); 

  2. EditorGUILayout.EndHorizontal();

  • 滑块:

         EditorGUILayout.Slider()

  • 进度条:

         EditorGUI.ProgressBar() 

  • 帮助框:

        EditorGUILayout.HelpBox()

  • 灰色地带:

        EditorGUI.BeginDisabledGroup

  • 绘制字段:

         EditorGUILayout.LabelField()标签字段 

  1. EditorGUILayout.IntField() 整数字段 

  2. EditorGUILayout.FloatField() 浮点数字段 

  3. EditorGUILayout.TextField() 文本字段 

  4. EditorGUILayout.Vector2Field() 二维向量字段 

  5. EditorGUILayout.Vector3Field() 三维向量字段 

  6. EditorGUILayout.Vector4Field() 四维向量字段 

  7. EditorGUILayout.ColorField() 颜色字段

举例:

步骤(一)Scripts文件夹里创建一个新C#脚本,命名为"TaskItem"

public class TaskItem : MonoBehavior {
    
    public int Id;
    public int star;
    public string Name;
    public string Icon;
    
    void Init()
    {
        id = 1001;
    }

    public string GroupName;
    public int GroupId;
    public string GroupKind;
}

步骤(二)Editor文件夹下chu自创建C#脚本 (Inspector界面布局)

using System.Collections;
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(TaskItem))] //CustomEditor(typeof())用于关联指定的脚本

public class TaskInspector : Editor {
    
    TaskItem taskItem;
    
    void OnEnable()
    {
        taskItem = (TaskItem)target; //获取当前编辑自定义Inspector的对象
    }


    public override void OnInspectorGUI()
    {
        EditorGUILayout.BeginVertical(); //面板以垂直方向来布局

        EditorGUILayout.Space(); //空一行
        EditorGUILayout.Space();

        EditorGUILayout.LabelField("Task Info"); //标题
        taskItem.Id = EditorGUILayout.IntField("Task ID:",taskItem.Id);
        taskItem.Name = EditorGUILayout.TextField("Task Name",taskItem.Name);

        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();

        EditorGUILayout.LableField("Task Desc");
        taskItem.desc = EditorGUILayout.TextArea(taskItem.desc,GUILayout.MinHeight(100));

        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();

        taskItem.star = EditorGUILayout.Slider("Process",taskItem.star,3);
        if(taskItem.star == 1)
        {
            GUI.color = Color.gary;
        }

        GUI.color = Color.white; // 防止上面的颜色变化,影响下面的颜色变化

        if(taskItem.star < 0)
        {
            //MessageType : Error/Warning/Info
            EditorGUILayout.HelpBox("任务所需星星数量不对!",MessageType.Error);
        }

        Rect progressRect = GUILayoutUtility.GetRect(50,50);//指定宽高
        EditorGUI.ProgressBar(progressRect,taskItem.star/100.0f,"PROCESS");//绘制进度条

        nextTask = EditorGUILayout.Foldout(nextTask,"nextTask"); //设置内容折叠

        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();

        
        EditorGUILayout.LabelField("Group");
        
        EditorGUILayout.BeginHorizontal();

        EditorGUILayout.LabelField("Name",GUILayout.MaxWidth(50));
        player.shoeName=EditorGUILayout.TextField(taskItem.GroupName);

        EditorGUILayout.LabelField("ID",GUILayout.MaxWidth(50));
        player.shoeSize=EditorGUILayout.IntField(taskItem.GroupId);

        EditorGUILayout.LabelField("Kind",GUILayout.MaxWidth(50));
        player.shoeType=EditorGUILayout.TextField(taskItem.GroupKind);

        EditorGUILayout.EndHorizontal();
 
        EditorGUILayout.EndVertical();        
    }    
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值