Есть MainCamera на которой висят скрипты. Соответственно, мне нужно чтобы объект не удалялся при загрузке нового уровня (сцены). Оставляю объект строкой: DontDestroyOnLoad(transform.gameObject). Нужно при входе в главное меню удалить прежнюю MainCamera. Как мне это реализовать?
Вчера в ответ на мой вопрос получил вот такой код от пользователя trollingchar :
public sealed class UnitySingleton : MonoBehaviour {
public static UnitySingleton Instance { get; private set; }
private void Awake () {
if (Instance) {
Destroy (gameObject);
}
else {
DontDestroyOnLoad (gameObject);
Instance = this;
}
}
}
Проблема заключается в том что скрипт на Canvas(text) работает , а на объектах с box collider2d нет.
P.S. С синглтонами я работаю впервые , да и проблему ,наверное, недостаточно хорошо описал.
Добавьте статический метод для удаления и обнуления ссылки на Instance
:
public sealed class UnitySingleton : MonoBehaviour {
public static UnitySingleton Instance { get; private set; }
private void Awake() {
if (Instance) {
Destroy(gameObject);
}
else {
DontDestroyOnLoad(gameObject);
Instance = this;
}
}
public static void DeleteSingletonInstance() {
if(Instance) {
Destroy(Instance.gameObject);
Instance = null;
}
}
}
Применение:
UnitySingleton.DeleteSingletonInstance();
Вообще, Singleton
- это объект, который существует, пока программа не завершит свое выполнение. Если вам вдруг понадобилось какие-то скрипты хранить в виде одиночки - лучше сделать отдельный от камеры объект-одиночку с необходимыми скриптами и не привязывать к этому делу камеру.
Есть также решение, когда мы имеем сцену, назовем ее InitScene, где храним объекты, не предназначенные для повторного создания. Вызываем у их родителя DontDestroyOnLoad
, инициализируем там что нам нужно и загружаем сцену с главным меню MainScene. После этого InitScene больше не загружаем.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ключ-имя игрока, значение-запись (в секундах) есть код, который нужно улучшить