Я использую актив Cinemachine , доступный в Unity Asset Store, и получаю кучу исключений.Хотя они, кажется, не влияют на мою игру как таковую, но все же я бы предпочел избавиться от них.Исключения появляются только тогда, когда я приостанавливаю приостановленную игру (используя Time.timeScale
), а не иначе.

След стека исключений ниже:
Утверждение не удалось: утверждение не выполнено для выражения: 'CompareApproximately (det, 1.0F, .005f)'
UnityEngine.Quaternion: FromToRotation (Vector3, Vector3)
Cinemachine.Utility.PositionPredictor: PredictPosition (Single) (в объектах / Cinemachine / Base / Runtime / Core / Predictor.cs: 64)
Cinemachine.CinemachineFramingTransposer: MutateCameraState (CameraState &, Single) (в базе данных / Cinemachine //Runtime/Components/CinemachineFramingTransposer.cs:318)
Cinemachine.CinemachineVirtualCamera: CalculateNewState (Vector3, Single) (в активах / Cinemachine / Base / Runtime / Behaviors / CinemachineVirtualCamera * * 2222) 1022 *2222* Cinemachine.CinemachineVirtualCamera: UpdateCameraState (Vector3, Single) (в активах / Cinemachine / Base / Runtime / Behaviors / CinemachineVirtualCamera.cs: 128)
Cinemachine.CinemachineCore: UpdateVirtualCamera (ICinemachineCamera, Vector3, Single) (в активах / Cinemachine / Base / Runtime / Core / CinemachineCore.cs: 237)
Cinemachine.CinemachineCore: UpdateAllActiveVirtualCameras (Vector3, Single)Cinemachine / Base / Runtime / Core / CinemachineCore.cs: 165)
Cinemachine.CinemachineBrain: UpdateVirtualCameras (UpdateFilter, Single) (в активах / Cinemachine / Base / Runtime / Behaviors / CinemachineBrain.cs: 445)
Cinemachine.CinemachineBrain: LateUpdate () (в разделе Активы / Cinemachine / Base / Runtime / Behaviors / CinemachineBrain.cs: 399)
Ниже приведен скрипт, отвечающий за приостановку и приостановку игры:
public void PauseGame()
{
if (pauseMenuCanvas)
{
Time.timeScale = 0f;
pauseKeyDisabled = true;
if (pauseMenuPanel)
{
pauseMenuPanel.SetActive(true);
pauseMenuPanel.GetComponent<CanvasGroup>().interactable = true;
if (pauseMenuPanelAnimator == null)
pauseMenuPanelAnimator = pauseMenuPanel.GetComponent<Animator>();
pauseMenuPanelAnimator.SetTrigger("Open");
if (!helptextPopulated)
{
helptextPopulated = true;
helptext.text += "\n\n<align=left>" + GameSession.contentInfotext;
}
}
}
gamePaused = true;
pauseKeyDisabled = false;
}
IEnumerator UnPauseCoRoutine()
{
pauseKeyDisabled = true;
Time.timeScale = 1;
if (pauseMenuPanel.activeSelf)
{
pauseMenuPanelAnimator.SetTrigger("Close");
pauseMenuPanel.GetComponent<CanvasGroup>().interactable = false;
}
if (helpPanel.activeSelf)
{
if (helpPanelAnimator == null)
{
helpPanelAnimator = helpPanel.GetComponent<Animator>();
helpPanel.GetComponent<CanvasGroup>().interactable = false;
}
helpPanelAnimator.SetTrigger("Close");
}
if (audioPanel.activeSelf)
{
if (audioPanelAnimator == null)
{
audioPanel.GetComponent<CanvasGroup>().interactable = false;
audioPanelAnimator = audioPanel.GetComponent<Animator>();
}
audioPanelAnimator.SetTrigger("Close");
}
RuntimeAnimatorController ac = pauseMenuPanelAnimator.runtimeAnimatorController;
yield return new WaitForSeconds(ac.animationClips[0].length); // use any animation from the array, as all have same length
pauseMenuPanel.SetActive(false);
helpPanel.SetActive(false);
audioPanel.SetActive(false);
gamePaused = false;
pauseKeyDisabled = false;
}