注册 登录
  • 欢迎访问Sharezer Blog

Unity 可以进行排序的列表ReorderableList

Editor sharezer 1700次浏览 已收录 0个评论

正在序列化一下List的默认样式如下:

public class TestScript : MonoBehaviour
{
    public List<string> TestList = new List<string>();
    void Start ()
    {

    }
    void Update ()
    {
    }
}

Unity 可以进行排序的列表ReorderableList

手动控制大小,不方便排序与删除

UnityEditorInternal有ReorderableList这个类,可以用于列表的排序

新建一个自定义扩展脚本

[CustomEditor(typeof(TestScript))]
public class TestScriptEditor : Editor
{
    TestScript testScript;
    private ReorderableList orderList;
    private void OnEnable()
    {
        testScript = target as TestScript;
        orderList = new ReorderableList(testScript.TestList, typeof(List<string>));
    }
    
    public override void OnInspectorGUI()
    {
        orderList.DoLayoutList();
    }
}

则新的序列化样子如下

Unity 可以进行排序的列表ReorderableList

并且通过拖拽左边的标志可以进行排序

Unity 可以进行排序的列表ReorderableList

接下来再在OnEnable中实现ReorderableList中的一些方法,则可以自定义列表的增加、删除、排序等事件。

orderList.drawElementCallback = (Rect rect, int index, bool selected, bool focused) =>
{
    testScript.TestList[index] = EditorGUI.TextField(rect, testScript.TestList[index]);
};
orderList.onAddCallback = (ReorderableList list) =>
{
    testScript.TestList.Add("");
    Repaint();
};
orderList.onRemoveCallback = (ReorderableList list) =>
{
    if (EditorUtility.DisplayDialog("警告", "是否删除?", "是", "否"))
    {
        ReorderableList.defaultBehaviours.DoRemoveButton(list);
        Repaint();
    }
};
orderList.drawHeaderCallback = (Rect rect) =>
{
    GUI.Label(rect, "标题");
};

Unity 可以进行排序的列表ReorderableList

Unity 可以进行排序的列表ReorderableList

  • drawHeaderCallback    绘制表头回调
  • drawFooterCallback    绘制尾部回调
  • drawElementCallback    绘制元素回调
  • drawElementBackgroundCallback    绘制元素背景回调
  • onReorderCallback    重新排序回调
  • onSelectCallback    选中回调
  • onAddCallback    添加按钮回调
  • onAddDropdownCallback    添加下拉选项回调
  • onRemoveCallback    移除元素回调
  • onMouseUpCallback    鼠标抬起回调
  • onCanRemoveCallback    是否显示可移除按钮回调
  • onChangedCallback    列表改变回调


Sharezer , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Unity 可以进行排序的列表ReorderableList
喜欢 (1)
[liangshaoze@sina.cn]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址