private IEnumerator FadeOut(float speed = 1.0f)
    {
        for (float progress = 1.0f - Time.deltaTime * speed; progress >= 0.0f; progress -= Time.deltaTime * speed)
        {
            _postProcess.Vignette  = progress * 1.6f;
            _postProcess.Grayscale = progress * 0.35f;

            yield return(null);
        }

        if (_postProcess != null)
        {
            DestroyImmediate(_postProcess);
            _postProcess = null;
        }
    }
    private IEnumerator FadeIn(float speed = 1.0f)
    {
        if (_postProcess != null)
        {
            DestroyImmediate(_postProcess);
        }

        _postProcess = _mainCameraTransform.gameObject.AddComponent <CameraPostProcess>();
        _postProcess.PostProcessMaterial = new Material(PostProcessMaterial);

        for (float progress = 0.0f; progress < 1.0f; progress += Time.deltaTime * speed)
        {
            _postProcess.Vignette  = progress * 1.6f;
            _postProcess.Grayscale = progress * 0.35f;

            yield return(null);
        }

        _postProcess.Vignette  = 1.6f;
        _postProcess.Grayscale = 0.35f;
    }