private IEnumerator SpeakerState(int direction)
    {
        if (direction > 0)
        {
            switch (_dialogueHolder.GetSpeakerAction(_dialogueIndex - 1))
            {
            //Não faz nada
            case DialogueLine.SpeakerActions.Nothing:
                if (_dialogueHolder.CheckForExistingDialogue(_dialogueIndex))
                {
                    SetSpeakerAppearance();
                }
                break;

            //Troca de NPC
            case DialogueLine.SpeakerActions.Change:
                _npcAnimator.Play("npcAvatar_exit");
                yield return(new WaitForSeconds(0.5f));

                SetSpeakerAppearance();
                _npcAnimator.Play("npcAvatar_enter");
                break;

            //Apenas faz o jogador ou o NPC saírem da tela
            case DialogueLine.SpeakerActions.Leave:
                SetSpeakerAppearance();
                if (_dialogueHolder.CheckIsPlayer(_dialogueIndex - 1))
                {
                    _playerAnimator.Play("playerAvatar_exit");
                }
                else
                {
                    _npcAnimator.Play("npcAvatar_exit");
                }
                break;

            case DialogueLine.SpeakerActions.End:
                StartCoroutine(CloseDialogueBox());
                break;

            default:
                //Verifica se é o último diálogo. Se for, ele não faz nada
                if (_dialogueIndex != _dialogueHolder.GetDialogueLenght())
                {
                    SetSpeakerAppearance();
                }
                break;
            }
        }
        else
        {
            SetSpeakerAppearance();
        }
    }