Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Singleton (в народе называемый паттерном программирования)Не программирования, а проектирования. И не в народе, а в первоисточнике. А в народе синглтон чаще называют антипаттерном. Но это другая история…
public class SomeSingleton : SingletonBehaviour<SomeSingleton>
// Метод, выполняемый при старте игры void Start () { // Теперь, проверяем существование экземпляра if (instance == null) { // Экземпляр менеджера был найден instance = this; // Задаем ссылку на экземпляр объекта } else if(instance == this){ // Экземпляр объекта уже существует на сцене Destroy(gameObject); // Удаляем объект } // Теперь нам нужно указать, чтобы объект не уничтожался // при переходе на другую сцену игры DontDestroyOnLoad(gameObject); // И запускаем собственно инициализатор InitializeManager(); }
instance != null?else if(instance == this) не выполнится никогда, так как, если instance не null, то и не this точно, так как метод Start класса MonoBehaviour, движок вызывает только один раз при инициализации компонента.if(instance!=null) Destroy(gameObject);
instance = this;
public class SomeSingleton : ScriptableObject
{
private static SomeSingleton _instance;
public SomeSingleton ()
{
if (_instance != null)
{
return;
}
_instance = this;
}
public static SomeSingleton Instance
{
get
{
if (_instance == null)
{
ScriptableObject.CreateInstance<SomeSingleton>();
}
return _instance;
}
}
}Кроме того, что синглтоном называют некий аггрегирующий класс, ничего не понял. Дочитал до слова "responce" и кажется понял — почему.
Использование Singleton в Unity3D