我想为 Unity 创建一个自定义编辑器,其中包含列表中的列表,并允许动态编辑大小并在第二个列表中使用弹出窗口。
这是我想要的几个例子:
问题是我不能改变第二个列表的大小,因为它改变了第二个列表中所有元素的大小,所以我不能为列表的每个元素设置不同的大小。
我对弹出窗口也有同样的问题,选择的项目对于所有弹出窗口都是相同的(如您在第二张图片中所见)。
如何保存所选每个项目的每个维度或弹出窗口而不更改其他项目?
这是我的代码:
ScriptableObject 类
public class MyClass : ScriptableObject {
public class MyInsideClass
{
public List<string> data;
public MyInsideClass()
{
data = new List<string>();
}
}
public List<MyInsideClass> allData;
}
自定义编辑器(数据库只有弹出列表名称)
[CustomEditor(typeof(MyClass))]
public class TempEdior : Editor
{
int numberOfCombinations = 0;
int numberOfDataForCombination = 0;
int selected = 0;
public override void OnInspectorGUI()
{
GUILayout.BeginHorizontal();
GUILayout.Label("Number of combinations:");
numberOfCombinations = EditorGUILayout.IntField(numberOfCombinations);
GUILayout.EndHorizontal();
for (int i = 0; i < numberOfCombinations; i++)
{
GUILayout.BeginHorizontal();
GUILayout.Label("Combination " + (i + 1) + " - number of data:");
numberOfDataForCombination = EditorGUILayout.IntField(numberOfDataForCombination);
GUILayout.EndHorizontal();
for (int j = 0; j < numberOfDataForCombination; j++)
{
Rect rect = EditorGUILayout.GetControlRect();
selected = EditorGUI.Popup(new Rect(rect.x + 63, rect.y, 100, EditorGUIUtility.singleLineHeight), selected, Database.Instance.slotTypes.ToArray());
}
}
}
}