1max1 писал(а):не советую делать синглтон от MonoBehaviour, лучше реализуй его обходными путями
Почему, нормально, только нужно соблюдать несколько правил:
✔ в Awake добавить DontDestroyOnLoad
✔ создавать его не из скрипта, а на главной сцене добавлять компонент в инспекторе
✔ предусмотреть, что при повторной загрузке главной сцены он продублируется, так что надо прибить лишний.
✔ Ну и, конечно, не вызывать этот синглтон в Awake в скриптах, или же настроить ExecutionOrder
А так, весьма удобно иметь синглтон от монобеха, в котором можно выставить в инспекторе какие-то значения. да и карутины те-же тоже нужны. Я, например, в таких храню текстуры и наборы цветов.
Вот, например, мой синглтон на монобехе
Используется csharp
public class GuiProcessor : MonoBehaviour {
public static GuiProcessor getI { get; private set; }
void Awake() {
Object[] gos = FindObjectsOfType(GetType());
if (gos != null && gos.Length > 1) {
//Если уже есть такой, самоубьёмся
Destroy(gameObject);
return;
}
//Не убивать при смене уровней
DontDestroyOnLoad(gameObject);
getI = this;
}
}