从带缓冲区的文件中读取.obj加载器 - unity

问题描述 投票:-1回答:1

我从文件中加载.obj文件,加载后我依次激活每个对象。这个过程效果很好。基本工作流程如下。

  1. 从文件中加载所有的.obj文件(n).
  2. 显示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);
        }

它仍然在等待所有对象被加载。你觉得解决方法是什么?

unity3d buffer loader
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.