Гость
Функция IEnumerator перезаписывается новыми вызовами функций
Сообщение
Гость » 19 мар 2024, 07:56
У меня есть дверная система, которую я сейчас тестирую. Это происходит через функцию IEnumerator, однако, если я открою одну дверь, а затем быстро другую, первая дверь остановится на том месте, где она была, и вторая дверь получит приоритет. Есть ли обходные пути?
Код: Выделить всё
public IEnumerator Animthingy(GameObject Object)
{
yield return new WaitForSeconds(1.5f);
AudioSource.PlayClipAtPoint(DoorOpen, Object.transform.parent.gameObject.transform.position, 2f);
anim.SetBool("IsOpen", true);
anim.SetBool("Activated", true);
AudioSource.PlayClipAtPoint(DoorClose, Object.transform.parent.gameObject.transform.position, 2f);
anim.Play("DoorOpen");
anim.SetBool("Activated", false);
yield return new WaitForSeconds(3f);
AudioSource.PlayClipAtPoint(DoorOpen2, Object.transform.parent.gameObject.transform.position, 2f);
yield return new WaitForSeconds(3f);
AudioSource.PlayClipAtPoint(DoorClose, Object.transform.parent.gameObject.transform.position, 2f);
yield return new WaitForSeconds(1.5f);
AudioSource.PlayClipAtPoint(DoorClose2, Object.transform.parent.gameObject.transform.position, 2f);
yield return new WaitForSeconds(1f);
Debug.Log("closing");
anim.Play("DoorClose");
AudioSource.PlayClipAtPoint(DoorOpen, Object.transform.parent.gameObject.transform.position, 2f);
yield break;
}
Дверь 1 открывается, дверь 2 открывается, дверь 1 не закрывается, а дверь 2 закрывается.
Подробнее здесь:
https://stackoverflow.com/questions/781 ... tion-calls
1710824205
Гость
У меня есть дверная система, которую я сейчас тестирую. Это происходит через функцию IEnumerator, однако, если я открою одну дверь, а затем быстро другую, первая дверь остановится на том месте, где она была, и вторая дверь получит приоритет. Есть ли обходные пути? [code]public IEnumerator Animthingy(GameObject Object) { yield return new WaitForSeconds(1.5f); AudioSource.PlayClipAtPoint(DoorOpen, Object.transform.parent.gameObject.transform.position, 2f); anim.SetBool("IsOpen", true); anim.SetBool("Activated", true); AudioSource.PlayClipAtPoint(DoorClose, Object.transform.parent.gameObject.transform.position, 2f); anim.Play("DoorOpen"); anim.SetBool("Activated", false); yield return new WaitForSeconds(3f); AudioSource.PlayClipAtPoint(DoorOpen2, Object.transform.parent.gameObject.transform.position, 2f); yield return new WaitForSeconds(3f); AudioSource.PlayClipAtPoint(DoorClose, Object.transform.parent.gameObject.transform.position, 2f); yield return new WaitForSeconds(1.5f); AudioSource.PlayClipAtPoint(DoorClose2, Object.transform.parent.gameObject.transform.position, 2f); yield return new WaitForSeconds(1f); Debug.Log("closing"); anim.Play("DoorClose"); AudioSource.PlayClipAtPoint(DoorOpen, Object.transform.parent.gameObject.transform.position, 2f); yield break; } [/code] Дверь 1 открывается, дверь 2 открывается, дверь 1 не закрывается, а дверь 2 закрывается. Подробнее здесь: [url]https://stackoverflow.com/questions/78183386/ienumerator-function-getting-overwritten-by-newer-function-calls[/url]