以下是一个使用Unity的EditorGUI绘制一个List并实现增加、移除和修改项值的示例代码:

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;

public class MyListWindow : EditorWindow {

    private List<string> myList = new List<string>();
    private Vector2 scrollPos;

    [MenuItem("Window/My List Window")]
    public static void ShowWindow() {
        GetWindow<MyListWindow>("My List");
    }

    private void OnGUI() {
        GUILayout.Label("My List", EditorStyles.boldLabel);

        // 绘制添加项的输入框和按钮
        GUILayout.BeginHorizontal();
        string newItem = EditorGUILayout.TextField("");
        if (GUILayout.Button("Add")) {
            myList.Add(newItem);
        }
        GUILayout.EndHorizontal();

        // 绘制列表和移除按钮
        scrollPos = GUILayout.BeginScrollView(scrollPos);
        for (int i = 0; i < myList.Count; i++) {
            GUILayout.BeginHorizontal();
            myList[i] = EditorGUILayout.TextField(myList[i]);
            if (GUILayout.Button("Remove")) {
                myList.RemoveAt(i);
            }
            GUILayout.EndHorizontal();
        }
        GUILayout.EndScrollView();
    }
}

在这个示例中,我们首先定义了一个List,然后在窗口的OnGUI方法中绘制了输入框和按钮,以便用户可以添加新的项。接着,使用GUILayout.BeginScrollView和GUILayout.EndScrollView方法绘制了列表,并在每一项旁边绘制了移除按钮,以便用户可以移除列表中的项。

请注意,我们在移除项的时候使用了myList.RemoveAt(i)方法,而不是myList.Remove(myList[i]),这是因为使用Remove方法可能会导致列表中的项索引发生变化,进而导致错误。

总而言之,Unity的EditorGUI提供了很多方便的工具和方法,可以帮助开发者快速构建自定义的编辑器窗口和面板。上述示例只是其中的一个例子,希望能对您有所帮助。

Unity EditorGUI: 使用List<string>构建可编辑列表

原文地址: https://www.cveoy.top/t/topic/oIYP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录