C# Unity3D中的WaitForSeconds

C# Unity3D中的WaitForSeconds,c#,unity3d,frame-rate,ienumerator,C#,Unity3d,Frame Rate,Ienumerator,我在Unity中有一个IENumerator,它每0.70f-0.82f激活一个地板对象,因此地板对象之间的间隙是随机生成的。问题是,当有人得到FPS下降,差距将是巨大的,他们的球员没有机会到达下一层。我可以使“收益率等待秒”fps独立吗? 代码如下: IEnumerator spawnFloors () { while (playerControll.isAlive) { for (int i = 0; i < floors.Length

我在Unity中有一个IENumerator,它每0.70f-0.82f激活一个地板对象,因此地板对象之间的间隙是随机生成的。问题是,当有人得到FPS下降,差距将是巨大的,他们的球员没有机会到达下一层。我可以使“收益率等待秒”fps独立吗? 代码如下:

IEnumerator spawnFloors () {

    while (playerControll.isAlive) {
                    for (int i = 0; i < floors.Length; i++) {

                            spawnWait = Random.Range (0.70f, 0.82f);  // 0.65f, 0.85f; aktuell = 0.70f, 0.82f;
                            Vector2 spawnPosition = new Vector2 (transform.position.x, transform.position.y);
                            Quaternion spawnRotation = Quaternion.identity;
                            for (int a = 0; a < floors.Length; a++) {
                                    int randomFloor = Random.Range (0, 9);
                                    if (!floors [randomFloor].activeInHierarchy) {
                                            floors [randomFloor].SetActive (true);
                                            break;

                                    }
                            }
                            //Instantiate(floors[Random.Range (0, 3)], spawnPosition, spawnRotation);
                            yield return new WaitForSeconds (spawnWait);


                    }
            }

    }`
IEnumerator(){
while(playercontrol.isAlive){
对于(int i=0;i
您考虑过改用吗

如果你想知道的话,unity已经成功了


它只是用于游戏中与帧无关的更新。

这是与fps无关的。游戏的其余部分似乎并非如此。您是否使用
Time.deltaTime
进行玩家移动?是的。除了这个问题,一切都很好。这种情况很少发生,但我不能让人们体验这种错误。你可以在单独的线程中生成下限值。我该怎么做?有没有办法我可以使用这个代码与一个小的调整,使它在真正的工作秒?我如何在unity中实现多线程编码?顺便说一句,我正在为移动设备开发。您可以使用System.Diagnostics.Stopwatch();它将更加准确,因为它将不依赖于unity的内部时钟,而是依赖于系统。在这里,你可以找到一个例子-