Unity EditorGUI: 使用List<string>构建可编辑列表
以下是一个使用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
请注意,我们在移除项的时候使用了myList.RemoveAt(i)方法,而不是myList.Remove(myList[i]),这是因为使用Remove方法可能会导致列表中的项索引发生变化,进而导致错误。
总而言之,Unity的EditorGUI提供了很多方便的工具和方法,可以帮助开发者快速构建自定义的编辑器窗口和面板。上述示例只是其中的一个例子,希望能对您有所帮助。
原文地址: https://www.cveoy.top/t/topic/oIYP 著作权归作者所有。请勿转载和采集!