2014-10-27 6 views
3

Должен ли я уничтожить его перед отключением приложения? или после того, как они уберут их?Unity3D - Когда уничтожен объект DontDestroyOnLoad?

Как работает DontDestroyOnLoad? есть счетчик ссылок?

+0

Я уверен, что приложение destoy его перед exiting.I'd думает, что все, что управляет сцена уничтожить объекты сцена использует, прежде чем перейти к следующей сцене, за исключением, если объект был отмечен не быть но я догадываюсь. – MVCDS

ответ

3

Объекты, созданные в сцене (по умолчанию), разрушаются при загрузке новой сцены (уровня). Используя DontDestroyOnLoad, вы говорите, что НЕ следуете этому поведению, чтобы объект сохранялся среди уровней. Вы всегда можете удалить его, вызвав функцию Destroy().

От documentation:

Делает целевой объект не будет уничтожен автоматически при загрузке новой сцены. При загрузке нового уровня все объекты в сцене уничтожаются, затем загружаются объекты нового уровня. Чтобы сохранить объект во время загрузки уровня, на нем наберите DontDestroyOnLoad. Если объект является компонентом или игровым объектом, то его целая иерархия преобразования также не будет уничтожена.

using UnityEngine; 
using System.Collections; 

public class ExampleClass : MonoBehaviour { 
    void Awake() { 
     DontDestroyOnLoad(transform.gameObject); 
    } 
} 
2

При изменении сценам все не-статические объекты в этой сцене будут уничтожены. Когда объект помечен как DontDestroyOnLoad, он не будет уничтожен при смене сцен.

Если позже вы хотели уничтожить этот объект можно назвать

Destroy(objName); 

, который иногда бывает полезно, если вы вернетесь на сцену, которая первоначально созданного объекта. Если вы не смогли уничтожить один или не смогли проверить, что он уже существует до создания, вы получите 2 объекта одного типа и оба будут нерушимыми.

Если ваше приложение выходит, вам не придется беспокоиться о том, чтобы уничтожить что-либо самостоятельно, это будет сделано для вас.


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

public static class DataContainer 
{ 
} 
Смежные вопросы