Хороший вопрос! Editor API docs
объясняет это, но информация в основном разбросана, поэтому я подведу итог:
Для начала, есть опция CanEditMultipleObjects
, которую вы сейчас не используете. Цитата из документов:
Если этот подход используется, пользователь может выбрать несколько активов в
окно иерархии и измените значения для всех них одновременно.
Для базового примера этого выберите два GameObjects
в вашей сцене, которые имеют одинаковый компонент Unity (например, Image
или Rigidbody
), и вы сможете изменять эти компоненты одновременно, чтобы иметь одинаковые значения. Большинство встроенных компонентов поддерживают его.
Это первое преимущество использования serializedObject
; он поддерживает редактирование нескольких объектов, а Editor.target
- нет (для этого вам потребуется Editor.targets
). Так что теперь, если вам интересно, «, почему бы мне просто не использовать Editor.targets
для редактирования мультиобъектов? », рассмотрите эту цитату из документов:
Вместо непосредственного изменения переменных скрипта выгодно
использовать для редактирования их системы SerializedObject и SerializedProperty,
так как это автоматически обрабатывает редактирование нескольких объектов, отмену и
Префаб перекрывает .
Что сводится к тому, что если вы не хотите, чтобы функции отмены, переопределения префабов и редактирования нескольких объектов автоматически обрабатывались для вас, просто используйте Editor.target
или Editor.targets
. Если вы хотите, чтобы эти функции просто работали автоматически, используйте SerializedObject
и SerializedProperty
.