public void OnTextChanged(DialogueFlow dialogue, TextData text, List <TextAnswerData> answers, SettingsData settings)
        {
            _behaviour = dialogue.Behaviour;

            // Select and open a skin
            if (settings.Skin == "")
            {
                settings.Skin = (dialogue.DefaultSkin != "") ? dialogue.DefaultSkin : DefaultSkin;
            }

            SelectSkin(settings.Skin);
            if (_activeSkin == null)
            {
                RunemarkDebug.Warning(settings.Skin + " skin doesn't exists in this canvas: " + gameObject.name);
                return;
            }

            // Stop the audio if currently playing
            if (_audioSource.isPlaying)
            {
                _audioSource.Stop();
            }

            // Set the actor's name and portrait
            string name     = text.Name;
            Sprite portrait = text.Portrait;

            _activeSkin.SetText(name, portrait, text.Text);
            _activeSkin.HideInputAnswer();

            _activeSkin.HideAnswers(0);

            // Set the answers
            int cnt = 0;

            foreach (var a in answers)
            {
                if (a.UseCustomUI)
                {
                    _activeSkin.SetCustomAnswer(a.UIElementName, a);
                }
                else if (answers.Count > cnt)
                {
                    _activeSkin.SetAnswer(cnt, a);
                    cnt++;
                }
            }
            // _activeSkin.HideAnswers(cnt);

            // Play Audio if any
            if (text.Audio != null)
            {
                _audioStopTime    = text.AudioEndTime;
                _audioSource.clip = text.Audio;
                _audioSource.time = text.AudioStartTime;

                if (text.AudioDelay > 0)
                {
                    _audioSource.PlayDelayed(text.AudioDelay);
                }
                else
                {
                    _audioSource.Play();
                }
            }

            // Set the timer
            if (_behaviour.Timer != null && cnt > 0)
            {
                _activeSkin.StartTimer(_behaviour.Timer.Seconds);
            }
            else
            {
                _activeSkin.HideTimer();
            }
        }