Есть 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 больше не загружаем.
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
ключ-имя игрока, значение-запись (в секундах) есть код, который нужно улучшить