Ich habe eine Coroutine, die eine Variable in meiner Benutzeroberfläche reibungslos ändert, aber wenn ich das Spiel pausiere, pausiert auch die Coroutine. Wie kann ich das beheben?
Code:
using UnityEngine;
using System.Collections;
public class HUDController : MonoBehaviour {
public void PauseGame() {
FreezeTime();
StartCoroutine(ShowPauseMenu());
}
private void FreezeTime() {
Time.timeScale = 0;
}
private IEnumerator ShowPauseMenu() {
var pauseMenuCanvasGroup = GameObject.FindWithTag("PauseMenu").GetComponent<CanvasGroup>();
var alphaValue = 1f;
var velocity = 0f;
var time = 0.15f;
while (!Mathf.Approximately(pauseMenuCanvasGroup.alpha, alphaValue)) {
pauseMenuCanvasGroup.alpha = Mathf.SmoothDamp(pauseMenuCanvasGroup.alpha, alphaValue, ref velocity, time);
yield return null;
}
pauseMenuCanvasGroup.alpha = 1; // Since float is not accurate, manually set the alpha to 1
pauseMenuCanvasGroup.interactable = true;
}
}
yield return null
odernew WaitForEndOfFrame()
weiter summen, wennTime.timeScale = 0
- es ist nuryield return new WaitForSeconds(delay)
diese Pause. Können Sie bestätigen, welche Version von Unity Sie ausführen?