/// <summary>
/// 绘制AllAttributeText组件Inspector面板的GUI的实现脚本
/// </summary>
using UnityEngine;
using UnityEditor;
using UnityEditorInternal;
[CanEditMultipleObjects] //如果有绘制的GUI则需要在该脚本加上该特性后,才能在Inspector面板上同时更改多个物体AllAttributeText组件的相同属性
[CustomEditor(typeof(AllAttributeText))] //加上该特性并继承Editor后,则注册为AllAttributeText组件的Inspector面板编辑脚本
public class AllAttributeTextEditor : Editor
{
private AllAttributeText m_component;
private ReorderableList m_CanSortList;
private void Awake()
{
m_component = (AllAttributeText)target;
m_CanSortList = new ReorderableList(serializedObject, serializedObject.FindProperty("CanSortList"));
InitReorderableList();
AddButtonClick();
}
public override void OnInspectorGUI()
{
Debug.Log("在渲染UI的时候每0.05秒调用一次,每次渲染都会先清空内容再渲染");
DrawDefaultInspector();
DrawMyGUI();
}
private void InitReorderableList()
{
//rect参数为传递过来的单行元素矩形信息,rect.x为最左边的值
//给绘制列表头部的委托事件drawHeaderCallback赋值
m_CanSortList.drawHeaderCallback = (rect) =>
{
EditorGUI.LabelField(new Rect(rect.x + 30, rect.y, rect.width, rect.height), "String");
EditorGUI.LabelField(new Rect(rect.x + rect.width
用GUI绘制Unity自定义组件的Inspector面板
最新推荐文章于 2024-02-27 14:15:24 发布