Описание
Наименьшее количество элементов в массиве среди всех целевых объектов. (Только чтение)
Если 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();
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();
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);
}
}