我从文件中加载.obj文件,加载后我依次激活每个对象。这个过程效果很好。基本工作流程如下。
显示i. .obj并进入i+1。
另外,当i+1.obj.处于活动状态时,我不再需要i.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);
}
它仍然在等待所有对象被加载。你觉得解决方法是什么?