[System.Serializable]
public class TriggerClass
{
public GameObject Trigger;
public bool Active;
public int Type;
public TriggerClass(GameObject obje, bool active = false, int type = 1)
{
Trigger = obje;
Active = active;
Type = type;
}
}
中。
这是Trigger类(现在就像这样简单)
[System.Serializable]
public class WrapperClass
{
public List<TriggerClass> Triggers = new List<TriggerClass>();
}
用于创建级别列表的包装类
public List<WrapperClass> Levels = new List<WrapperClass>();
当然
InspectorCustomizer.cs
我将它们序列化,并且它们在Unity中的标准Inspector绘图中显示正常,但我需要自定义显示此列表的Inspector,因此我在Editor文件夹中创建了EditorList.cs
和[CustomEditor(typeof(LevelController))]
public class InspectorCustomizer : Editor
{
public override void OnInspectorGUI()
{
//DrawDefaultInspector();
serializedObject.Update();
EditorList.Show(serializedObject.FindProperty("Levels"));
serializedObject.ApplyModifiedProperties();
}
}
。
现在我只是试图模拟Unity对列表执行的默认绘制(扩展箭头,创建列表节点数量的大小字段,并且在每个节点中都是相同的事情,正如我所说,发生的默认值如果取消注释DrawDefaultInspector并在InspectorCustomizer.cs中注释其他3行)
InspectorCustomizer:
EditorList.cs
这里是public static class EditorList
{
public static void Show (SerializedProperty list)
{
EditorGUILayout.PropertyField(list);
EditorGUI.indentLevel += 1;
if (list.isExpanded)
{
EditorGUILayout.PropertyField(list.FindPropertyRelative("Array.size"));
for (int i = 0; i < list.arraySize; i++)
{
EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i));
}
}
EditorGUI.indentLevel -= 1;
}
}
:
EditorList.Show(list[i]);
但是这只是显示带有空元素的“Levels”列表,我点击每个元素中的expandd箭头并且没有显示任何内容,我知道这是因为脚本只是通过Levels列表而不是每个元素内部迭代,但我不知道如何遍历Levels列表中的每个元素以显示相同的内容。 我真的不习惯序列化,所以请原谅我,如果这听起来很容易。
我无法在for循环中执行var fs = require('fs');
var exec = require('child_process').exec;
var cmd = 'echo $(git rev-parse --abbrev-ref HEAD)|$(git log -1 --format=%cd)|$(git rev-parse HEAD)';
exec(cmd, function(error, stdout, stderr) {
fs.writeFile("src/test.js", stdout, function(err) {
if(err) return console.log(err);
console.log(stdout);
});
});
因为它当然无法将索引应用于serializedProperty,所以我该如何处理?
答案 0 :(得分:0)
不,你不需要private List<string> serchForElement(string searchText, list<string> ListOfitems)
{
searchText = searchText.ToLower();
List<string> Newlist = (from items in ListOfitems
where items.ToLower().Contains(searchText.ToLower())
select items).ToList<string>();
。
EditorGUILayout.PropertyField有一个参数EditorList.cs
来显示其子属性。
includeChildren