Unity如何在检视面板中移除数组元素标签(Element 0 - Element ...)?

3
在我的编辑器中,我正在尝试弄清楚如何删除红色框中的内容(元素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

1个回答

7
要显示每个数组索引的值,您只需枚举数组并仅为该值显示一个字段即可:
[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();
    }
}

我尚未完全测试过这个,即保存场景,加载并验证所有字段是否序列化,但是检查器中的外观似乎符合您的要求。

非常感谢您,它按预期工作。我会发布一张截图,以防其他人需要查看。 - JoeyL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接