Unity 6.3
0 онлайн 67 гостей 3 в системе
Вход

Object.DestroyImmediate

Declaration

public static void DestroyImmediate(Object obj, bool allowDestroyingAssets = false);

Параметры

Параметр Описание
Объект Объект, подлежащий уничтожению.
allowDestroyingAssets Установите в значение true, чтобы разрешить уничтожение ассетов.

Описание

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

DestroyImmediate предназначен для использования в скриптах, которые запускаются в режиме редактирования, а не во время выполнения. В режиме редактирования обычно задерживается уничтожение, выполняемое Destroy не происходит, поэтому необходимо немедленно уничтожить.

В коде времени выполнения используйте Object.Destroy Этот вызов отмечает объект для уничтожения в конце текущего кадра, что более безопасно и предотвращает многие общие проблемы. Если вы хотите только отключить объект, вы можете использовать GameObject, использование GameObject.SetActive вместо этого.

Попытка вызвать DestroyImmediate во время физических событий триггера/контакта, обратных вызовов событий анимации, обратных вызовов рендеринга, или MonoBehaviour.OnValidate приводит к ошибке.

Использование DestroyImmediate с факультативным протоколом allowDestroyingAssets параметр установлен на true может навсегда удалить ресурсы из проекта.

Уничтожение или удаление объектов из коллекции (например, массива или списка) при циклическом прохождении через нее может привести к пропускам элементов, ошибкам вне пределов или другому непредсказуемому поведению. Это общий риск программирования, не уникальный для Unity.

// Select one or more GameObjects in your hierarchy.
// Go to the menu: Tools > Destroy Selected GameObjects Immediately.
// The selected GameObjects will be deleted from the scene immediately.

using UnityEngine; using UnityEditor;

public class DestroyImmediateExample { [MenuItem("Tools/Destroy Selected GameObjects Immediately")] static void DestroySelectedGameObjects() { // Get all selected GameObjects in the scene var selected = Selection.gameObjects;

if (selected.Length == 0) { Debug.LogWarning("No GameObjects selected!"); return; }

foreach (var go in selected) { // Destroys the object immediately in the editor Object.DestroyImmediate(go); } Debug.Log($"{selected.Length} GameObjects destroyed immediately."); } }