Unity 6.3
0 онлайн 57 гостей 3 в системе
Вход
Программирование в Unity Шаг 45 из 210

Пути свойств

Пути свойств представляют собой строки, описывающие расположение свойства в объекте контейнера.

Вы можете использовать пути свойств для получения или установки данных объекта на определенном пути или для принятия посетителя на подсвойстве объекта.

Пути свойств построены из строк и разрешают конкретный экземпляр свойства из корневого объекта. Например, путь foo.bar.baz[12] разрешает 13-й элемент контейнера списка baz в контейнере bar, который вложен внутри контейнера foo.

Для создания и изменения путей свойств используйте Unity.Properties.PropertyPath class.

Пути свойств можно использовать для выполнения следующих действий:

  • Получить или установить данные объекта в определенном пути.
  • Принятие посетителей в подсвойстве объекта.

Пример использования путей свойств для принятия посетителей в подсвойстве объекта см. в примере Использование PropertyVisitor для создания посетителя свойства.

Соображения, касающиеся эффективности

Unity.Properties.PropertyPath — неизменяемый структурный тип. Когда вы строите путь свойства из строки, происходят выделения памяти для извлечения подстрок.

В следующей таблице перечислены поведения выделения при построении пути свойства из строки:

Струна Длина Поведение распределения
"Path" 1 Без выделения: весь путь является одним сегментом, и на исходную строку делается ссылка в том виде, в котором она есть.
"Path.To" 2 Два распределения: выделение двух новых экземпляров подстроки для "Path" и "To" после разделения на разделители ..
"Path.To[2]" 3 Три распределения: подстроки для "Path" и "To", плюс анализ/извлечение для индекса "[2]".
"Path.To[2].My" 4 Четыре распределения: подстроки для "Path", "To"и "My", плюс анализ/извлечение для индекса "[2]".
"Path.To[2].My.Value" 5 Шесть распределений: подстроки для "Path", "To", "My"и "Value", анализ/извлечение для "[2]"и распределение массива для хранения расширенных частей.

PropertyPath представляет собой массив частей типа PropertyPathPart, и четыре части встроены непосредственно перед выделением массива для любых дополнительных частей. В следующей таблице перечислены поведения выделения при построении пути свойства из частей:

Струна Длина Поведение распределения
PropertyPath.FromName("Path") 1 Без распределения: использует первый встроенный PropertyPathPart.
PropertyPath.AppendName(previous, "To") 2 Без распределения: использует второй встроенный PropertyPathPart.
PropertyPath.AppendIndex(previous, 2) 3 Без распределения: использует третий встроенный PropertyPathPart.
PropertyPath.AppendName(previous, "My") 4 Без распределения: использует четвертое встроенное PropertyPathPart.
PropertyPath.AppendName(previous, "Value") 5 Одно выделение: выделяет новый массив, содержащий дополнительные части пути свойства.

Чтобы оптимизировать производительность и избежать выделения памяти:

  • Инициализация и кэширование путей свойств во время процедур инициализации.
  • Объединение или добавление частей пути свойства вместо его построения из строки, до четырех частей.

Дополнительные ресурсы