版本:Unity 6 (6000.0)
语言English
  • C#

SerializedProperty.DeleteArrayElementAtIndex

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项修改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public void DeleteArrayElementAtIndex(int index);

描述

删除数组中指定索引处的元素。

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class DeleteArrayElementAtIndexExample : ScriptableObject { public List<string> m_Data;

[MenuItem("Example/SerializedProperty/DeleteArrayElementAtIndex Example")] static void MenuCallback() { DeleteArrayElementAtIndexExample obj = ScriptableObject.CreateInstance<DeleteArrayElementAtIndexExample>(); obj.m_Data = new List<string>() { "The", "big", "cat", "jumped." };

SerializedObject serializedObject = new SerializedObject(obj); SerializedProperty arrayProperty = serializedObject.FindProperty("m_Data");

arrayProperty.DeleteArrayElementAtIndex(1);

// With previous deletion index 2 now becomes the last element arrayProperty.DeleteArrayElementAtIndex(2);

serializedObject.ApplyModifiedProperties();

// Outputs "The cat" Debug.Log("Final array contents: " + string.Join(" ", obj.m_Data)); } }
using UnityEngine;
using UnityEditor;

public class DeleteArrayElementAtIndexExample2 : ScriptableObject { public int[] m_Array = new int[] { 1, -1, -1, 3, -1, -1, 1, 3, -1 };

[MenuItem("Example/SerializedProperty/DeleteArrayElementAtIndex Example 2")] static void MenuCallback() { var scriptableObject = ScriptableObject.CreateInstance<DeleteArrayElementAtIndexExample2>();

using (var serializedObject = new SerializedObject(scriptableObject)) { SerializedProperty arrayProperty = serializedObject.FindProperty("m_Array");

// Iterate the array removing any negative numbers int arraySize = arrayProperty.arraySize; for (int index = 0; index < arraySize;) { var arrayElement = arrayProperty.GetArrayElementAtIndex(index); if (arrayElement.intValue < 0) { arrayProperty.DeleteArrayElementAtIndex(index); arraySize--; } else { index++; } }

serializedObject.ApplyModifiedProperties(); Debug.Log("Cleaned array contents: " + string.Join(" ", scriptableObject.m_Array)); } } }