Example #1
0
    public void OnGameInfoChange(string text, float timeDisplayed = 1.0f, float fadeTime = 1.0f)
    {
        StopCoroutine("StartTimer");

        _uiLabel.text  = text;
        _uiLabel.alpha = 1.0f;

        TimerCoroutineInfo info = new TimerCoroutineInfo();

        info.time           = timeDisplayed;
        info.updateCallback = null;
        info.endCallback    = () =>
        {
            TimerCoroutineInfo endInfo = new TimerCoroutineInfo();
            endInfo.time           = fadeTime;
            endInfo.updateCallback = timeRemaining =>
            {
                _uiLabel.alpha = timeRemaining / fadeTime;
            };
            endInfo.endCallback =
                () =>
            {
                _uiLabel.text  = "";
                _uiLabel.alpha = 0.0f;
            };

            StartCoroutine("StartTimer", endInfo);
        };

        StartCoroutine("StartTimer", info);
    }
Example #2
0
    private IEnumerator StartTimer(TimerCoroutineInfo info)
    {
        float currentTime = info.time;

        while (currentTime > 0.0f)
        {
            yield return(null);

            currentTime -= Time.deltaTime;

            if (info.updateCallback != null)
            {
                info.updateCallback(currentTime);
            }
        }

        if (info.endCallback != null)
        {
            info.endCallback();
        }
    }