所有目标对象中数组元素的最小数量。(只读)
如果 SerializedObject 包含多个对象,则此属性返回元素的最小数量。与 SerializedProperty.arraySize 不同,即使最小大小大于 SerializedObject.maxArraySizeForMultiEditing,也会返回最小大小。在这种情况下,可以增大 SerializedObject.maxArraySizeForMultiEditing 以允许访问数组内容。
当 SerializedObject 仅包含单个对象时,此属性的行为与 SerializedProperty.arraySize 相同,并返回真实的数组大小。
其他资源: arraySize、isArray、SerializedObject.targetObjects。
using UnityEditor; using UnityEngine;
public class MinArraySizeExample : ScriptableObject { public int[] m_data;
[MenuItem("Example/SerializedProperty MinArraySize Example")] static void TestMethod() { const int largeArraySize = 100; // Larger than the default maxArraySizeForMultiEditing value of 64
MinArraySizeExample obj1 = ScriptableObject.CreateInstance<MinArraySizeExample>(); obj1.m_data = new int[largeArraySize];
for (int i = 0; i < largeArraySize; i++) obj1.m_data[i] = i;
// Second object with its own copy of the large array MinArraySizeExample obj2 = ScriptableObject.CreateInstance<MinArraySizeExample>(); obj2.m_data = obj1.m_data;
// Create serialized object for manipulating both objects SerializedObject serializedObject = new SerializedObject(new Object[] { obj1, obj2 }); SerializedProperty property = serializedObject.FindProperty("m_data");
// arraySize returns 0 but minArraySize returns largeArraySize Debug.LogFormat("Array Size: {0}\nMin Array Size: {1}\nMax Array Size: {2}", property.arraySize, property.minArraySize, serializedObject.maxArraySizeForMultiEditing);
// Any call to GetArrayElementAtIndex() at this point would fail
// Extend the max permitted array size serializedObject.maxArraySizeForMultiEditing = property.minArraySize;
// Now arraySize returns largeArraySize, and the elements can be retrieved Debug.LogFormat("New Array Size: {0}, Last element: {1}", property.arraySize, property.GetArrayElementAtIndex(largeArraySize - 1).intValue); } }