C# Unity3D中的WaitForSeconds
我在Unity中有一个IENumerator,它每0.70f-0.82f激活一个地板对象,因此地板对象之间的间隙是随机生成的。问题是,当有人得到FPS下降,差距将是巨大的,他们的球员没有机会到达下一层。我可以使“收益率等待秒”fps独立吗? 代码如下: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
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的内部时钟,而是依赖于系统。在这里,你可以找到一个例子-