@SkyCrusher

Resources.FindObjectsOfTypeAll не работает при старте Unity?

Хочу сделать синглтон на основе ScrictableObject.
public abstract class ScriptableSingleton<T> : ScriptableObject where T : ScriptableObject {
        static T _instance = null;
        public static T Instance
        {
            get
            {
                if (!_instance)
                    _instance = Resources.FindObjectsOfTypeAll<T>().FirstOrDefault();
                return _instance;
            }
        }
    }

Нашел такой код, и все бы хорошо, но только при перезапуске Unity, при обращении к Instance, мне выдает NullReferenceException. Однако стоит выделить сам ScriptableObject в окне проекта, код работает прекрасно. Подозреваю, что это как-то связано с подгрузкой объекта при выделении в память Unity, но не смог найти, как поправить эту проблему. Версия Unity: 2020.3.2f1.
  • Вопрос задан
  • 23 просмотра
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Все правильно работает. FindObjectsOfType() ищет загруженные в память объекты. И похоже нужного вам объекта там нет. Выделяя в редакторе вы заставляете Unity его загрузить.

Что делать? Не знаю. Переписать код, чтобы работал иначе. Тут вам виднее.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы