public void AddSubtitle(AudioClip clip, string key = null, OnSubtitleDone onSubtitleDone = null)
    {
        if (clip == null)
        {
            return;
        }
        if (key == null)
        {
            key = clip.name;
        }

        string text    = Localization.GetText(key);
        float  seconds = clip.length;

        audioSource.PlayOneShot(clip);
        gameUi.SetSubtitleText(text, seconds);
        if (onSubtitleDone != null)
        {
            StartCoroutine(InvokeAfterSeconds(seconds, onSubtitleDone));
        }
    }
    private IEnumerator InvokeAfterSeconds(float seconds, OnSubtitleDone onSubtitleDone)
    {
        yield return(new WaitForSeconds(seconds));

        onSubtitleDone?.Invoke();
    }