gpt4 book ai didi

c# - Unity 如何在检查器中删除数组中的元素标签(Element 0 - Element ...)

转载 作者:行者123 更新时间:2023-11-30 14:26:24 25 4
gpt4 key购买 nike

在我的一个脚本的编辑器中,我试图弄清楚如何删除红色框中的内容(元素 0 - 元素 14),所以基本上你只会看到字符串输入。

enter image description here

到目前为止我的编辑器脚本:

[CustomEditor(typeof(Change))]
public class Change_Editor : Editor {

public override void OnInspectorGUI(){

// Grab the script.
Change myTarget = target as Change;
// Set the indentLevel to 0 as default (no indent).
EditorGUI.indentLevel = 0;
// Update
serializedObject.Update();

EditorGUILayout.BeginHorizontal();


EditorGUILayout.BeginVertical();
EditorGUILayout.PropertyField(serializedObject.FindProperty("SceneNames"), true);
EditorGUILayout.EndVertical();


EditorGUILayout.EndHorizontal();


// Apply.
serializedObject.ApplyModifiedProperties();
}
}

编辑:MotoSV 的回答有效,结果如下所示。

enter image description here

最佳答案

要仅显示每个数组索引的值,您只需枚举整个数组并显示一个仅用于该值的字段:

[CustomEditor(typeof(Change))]
public class Change_Editor : Editor
{
public override void OnInspectorGUI()
{
// Grab the script.
Change myTarget = target as Change;
// Set the indentLevel to 0 as default (no indent).
EditorGUI.indentLevel = 0;
// Update
serializedObject.Update();

EditorGUILayout.BeginHorizontal();

EditorGUILayout.BeginVertical();

// >>> THIS PART RENDERS THE ARRAY
SerializedProperty sceneNames = this.serializedObject.FindProperty("SceneNames");
EditorGUILayout.PropertyField(sceneNames.FindPropertyRelative("Array.size"));

for(int i = 0; i < sceneNames.arraySize; i++)
{
EditorGUILayout.PropertyField(sceneNames.GetArrayElementAtIndex(i), GUIContent.none);
}
// >>>

EditorGUILayout.EndVertical();

EditorGUILayout.EndHorizontal();

// Apply.
serializedObject.ApplyModifiedProperties();
}
}

我还没有对此进行全面测试,即保存场景、加载并验证所有字段都已序列化,但检查器中的外观似乎与您所追求的相符。

关于c# - Unity 如何在检查器中删除数组中的元素标签(Element 0 - Element ...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35471039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com