Unity3D 中的 WaitForSeconds
WaitForSeconds in Unity3D
我在 Unity 中有一个 IENumerator,它每 0.70f-0.82f 激活一个地板对象,因此地板对象之间的间隙是随机生成的。问题是,当某人的 FPS 下降时,差距会很大,他们的玩家没有机会到达下一层。我可以使 "yield WaitForSeconds" 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);
}
}
}`
您是否考虑过使用 FixedUpdate()
?
如果您想知道 what's the difference, unity has a tutorial for it。
它仅用于游戏中的帧无关更新。
我在 Unity 中有一个 IENumerator,它每 0.70f-0.82f 激活一个地板对象,因此地板对象之间的间隙是随机生成的。问题是,当某人的 FPS 下降时,差距会很大,他们的玩家没有机会到达下一层。我可以使 "yield WaitForSeconds" 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);
}
}
}`
您是否考虑过使用 FixedUpdate()
?
如果您想知道 what's the difference, unity has a tutorial for it。
它仅用于游戏中的帧无关更新。