Я загружаю файлы .obj из файла и после загрузки активирую каждый объект по очереди. Этот процесс работает хорошо. Основной рабочий процесс c выглядит следующим образом:
- Загрузить все .obj из файла (n).
Дисплей i. .obj и go to i + 1
Кстати, мне не нужен i. obj больше, когда i + 1. OBJ. активен.
Моя проблема в том, что я не хочу ждать загрузки всех объектов. Да, загрузить определенное количество объектов, но затем объекты продолжают загружаться в фоновом режиме. Если есть 100 объектов или любое число, я должен ждать их загрузки. И когда число увеличивается, время, которое мне приходится ждать, увеличивается. Я не хочу этого.
Вот мой кусок кода:
void loadobjectsfromfolder(string folder, List<GameObject> objs){
var filesObj = new DirectoryInfo(folder)
.GetFileSystemInfos("*.obj").OrderBy(fs => int.Parse(fs.Name.Split('_')[1].Substring(0, fs.Name.Split('_')[1].Length - fs.Extension.Length)));
for (int k = 0; k<filesObj.ToArray().Length; k++)
{
objs.Add(new OBJLoader().Load(folder + filesObj.ElementAt(k).Name ));
objs.Last().SetActive(false);
}
А затем,
StartCoroutine(PlayObjs(false)); //to show them all in order
Это не очень хороший способ, которым я пытался загрузить 50 Сначала выполните obj, затем вызовите StartCoroutine(PlayObjs(false))
, а затем продолжите загрузку obj, но это не сработало. Я имею в виду
for (int k = 0; k<50; k++)
{
objs.Add(new OBJLoader().Load(folder + filesObj.ElementAt(k).Name ));
objs.Last().SetActive(false);
}
StartCoroutine(PlayObjs(false));
for (int k = 50; k<n; k++)
{
objs.Add(new OBJLoader().Load(folder + filesObj.ElementAt(k).Name ));
objs.Last().SetActive(false);
}
Он все еще ожидает загрузки всех объектов. Что вы думаете о решении?