Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

AssetPostprocessor.OnPostprocessPrefab(GameObject root)

Описание

Получает уведомление, когда префаб завершает импорт.

Чтобы использовать эту функцию, добавьте ее в подкласс. Он позволяет вам изменять импортированный GameObject. GameObjects существуют только во время импорта, и Unity уничтожает их сразу после импорта.

Эта функция вызывается перед созданием импортированного префаба в папке библиотеки и перед его записью на диск. Таким образом, вы имеете полный контроль над сгенерированными игровыми объектами и компонентами.

Любые ссылки на GameObjects становятся недействительными после того, как Unity завершит импорт. Таким образом, вы не можете создать новый Prefab в файле, отличном от OnPostprocessPrefab, который ссылается на сетки в импортированном файле Prefab.

Чтобы добавить новые объекты Asset в Prefab, вызовите AssetPostprocessor.context.AddObjectToAsset()

Постпроцессор может устанавливать или изменять флаги скрытия для объектов в префабе. К добавленным объектам активов всегда добавляются флаги DontSaveInEditor и NotEditable. Добавленные игровые объекты и компоненты всегда получают добавленный флаг DontSaveInEditor. Флаг DontSaveInEditor всегда установлен, чтобы объект не сохранялся обратно в исходный ресурс префаба, потому что это дублирует сгенерированные объекты каждый раз, когда сохраняется префаб.

root — это корневой GameObject импортированного префаба.

using UnityEngine; using UnityEditor; // Добавляет меш-коллайдер к каждому игровому объекту, имя которого содержит коллайдер public class Example : AssetPostprocessor { void OnPostprocessPrefab(GameObject g) { Apply(g.transform); } void Apply(Transform t) { if (t.name.ToLower().Contains("collider")) t.gameObject.AddComponent<MeshCollider>(); // Рекурсия foreach (Transform child in t) Apply(child); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3