В моей игре есть метод, который динамически находит и создает префабы в моей сцене, как это
public void CreateAgent(string agentName)
{
var prefabs = Resources.FindObjectsOfTypeAll<Agent>();
var selectedPrefab = prefabs.Where(p => p.name == agentName).FirstOrDefault();
Instantiate(selectedPrefab.gameObject);
}
Иногда это работает, но иногда кажется, что ресурс для моего префаба не был загружен,поэтому Resources.FindObjectsOfTypeAll()
не возвращает ресурс, который я хочу загрузить.Я могу решить эту проблему, сначала позвонив по номеру Resources.LoadAll<Agent>("MyPrefabDirectory")
, но я не уверен, что выполнение этого во время игры вызовет проблемы или замедлит игру.Также кажется, что Unity выгружает ранее использованные ресурсы, потому что я могу загрузить префаб A в мою сцену, затем загрузить новую сцену, и когда я пытаюсь загрузить префаб A в новую сцену, это приводит к тому, что префаб A не будет найден Resources.FindObjectsOfTypeAll()
Итак, мои вопросы
- Почему я должен позвонить
Resources.LoadAll()
, прежде чем Resources.FindObjectsOfType()
найдет мой сборник? - Почему Unity выгружаетранее загруженный ресурс, когда я меняю сцены?
- Неужели звонить
Resources.LoadAll<MyResourceType>()
во время игры плохо?