Esempio n. 1
0
    public void StartFade(CameraFadeAttributes targetFadeAttributes)
    {
        cameraFadeImage.gameObject.SetActive(true);

        if (currentFadeCoroutine != null)
        {
            StopCoroutine(currentFadeCoroutine);
        }

        currentFadeCoroutine = BasicImageFade(targetFadeAttributes);

        StartCoroutine(currentFadeCoroutine);
    }
Esempio n. 2
0
    private IEnumerator BasicImageFade(CameraFadeAttributes targetFadeAttributes)
    {
        currentCameraFadeAttributes = targetFadeAttributes;

        Color currentColor = Color.white; //Setting default values for Fade Colors
        Color targetFadeColor = Color.black;

        float currentFadeValue = 0f; //Setting default values for fade variables
        float fadeDuration = 0f;

        isFading = true;

        switch (targetFadeAttributes.cameraFadeType)
        {
            case CAMERA_FADE_TYPE.IN:
                fadeDuration = targetFadeAttributes.fadeInTime;
                currentColor = baseImageColor;
                targetFadeColor = Color.clear;
                break;

            case CAMERA_FADE_TYPE.OUT:
                fadeDuration = targetFadeAttributes.fadeOutTime;
                currentColor = Color.clear;
                targetFadeColor = baseImageColor;
                break;

            case CAMERA_FADE_TYPE.FADE_IN_THEN_OUT:
                fadeDuration = targetFadeAttributes.fadeInTime;
                currentColor = baseImageColor;
                targetFadeColor = Color.clear;
                break;

            case CAMERA_FADE_TYPE.FADE_OUT_THEN_IN:
                fadeDuration = targetFadeAttributes.fadeOutTime;
                currentColor = Color.clear;
                targetFadeColor = baseImageColor;
                break;

            case CAMERA_FADE_TYPE.NONE:
                yield return null;
                break;
        }

        while(currentFadeValue < 1)
        {
            currentFadeValue += Time.deltaTime / fadeDuration;

            if (currentFadeValue > 1)
            {
                currentFadeValue = 1;
            }

            cameraFadeImage.color = Color.Lerp(currentColor, targetFadeColor, currentFadeValue);

            yield return new WaitForEndOfFrame();
        }

        if (targetFadeAttributes.fadeTransitionWaitTime > 0)
        {
            yield return new WaitForSeconds(targetFadeAttributes.fadeTransitionWaitTime);
        }

        switch(targetFadeAttributes.cameraFadeType)
        {
            case CAMERA_FADE_TYPE.FADE_IN_THEN_OUT:
                currentFadeValue = 0;
                fadeDuration = targetFadeAttributes.fadeOutTime;
                currentColor = Color.clear;
                targetFadeColor = baseImageColor;
                break;

            case CAMERA_FADE_TYPE.FADE_OUT_THEN_IN:
                currentFadeValue = 0;
                fadeDuration = targetFadeAttributes.fadeInTime;
                currentColor = baseImageColor;
                targetFadeColor = Color.clear;
                break;
        }

        if (currentFadeValue == 0)
        {
            while (currentFadeValue < 1)
            {
                currentFadeValue += Time.deltaTime / fadeDuration;

                if (currentFadeValue > 1)
                {
                    currentFadeValue = 1;
                }

                cameraFadeImage.color = Color.Lerp(currentColor, targetFadeColor, currentFadeValue);

                yield return new WaitForEndOfFrame();
            }
        }

        currentFadeCoroutine = null;

        isFading = false;

        EndFade();

        yield return null;
    }