TTS Events

Inherit from EasyManager.cs

using EasyCodeForVivox;

public class VivoxManager : EasyManager
{

}

Inject EasyEvents

using EasyCodeForVivox.Events;
using UnityEngine;
using Zenject;

public class VivoxEvents : MonoBehaviour
{
    EasyEvents _events;

    [Inject]
    private void Initialize(EasyEvents events)
    {
        _events = events;
    }
}

Dynamic Events

Make sure Dynamic Events are enabled

How to Subscribe to TextToSpeech Events in EasyCode

EasyManager

Keeping the base methods are not necessary. They are simply Debug.Logs(). Feel free to delete them

// Text-To-Speech Event Callbacks

protected override void OnTTSMessageAdded(ITTSMessageQueueEventArgs ttsArgs)
{
    base.OnTTSMessageAdded(ttsArgs);
}

protected override void OnTTSMessageRemoved(ITTSMessageQueueEventArgs ttsArgs)
{
    base.OnTTSMessageRemoved(ttsArgs);
}

protected override void OnTTSMessageUpdated(ITTSMessageQueueEventArgs ttsArgs)
{
    base.OnTTSMessageUpdated(ttsArgs);
}

EasyEvents

public void SubscribeToTTAEvents()
{
    _events.TTSMessageAdded += OnTTSMessageAdded;
    _events.TTSMessageRemoved += OnTTSMessageRemoved;
    _events.TTSMessageUpdated += OnTTSMessageUpdated;
}

public void UnsubscribeFromTTSEvents()
{
    _events.TTSMessageAdded -= OnTTSMessageAdded;
    _events.TTSMessageRemoved -= OnTTSMessageRemoved;
    _events.TTSMessageUpdated -= OnTTSMessageUpdated;
}


protected virtual void OnTTSMessageAdded(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Added : {ttsArgs.Message.Text}");
}

protected virtual void OnTTSMessageRemoved(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Removed : {ttsArgs.Message.Text}");
}

protected virtual void OnTTSMessageUpdated(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Updated : {ttsArgs.Message.Text}");
}

Dynamic Events

Make sure the parameter in your method matches the event type. See what parameter is required for each User Event here. Dynamic events will dynamically invoke your method at runtime on every game object that has a dynamic event attribute. Because of this there is no need to Subscribe/Unsubscribe from events with the usual +=/-=

[TextToSpeechEvent(TextToSpeechStatus.TTSMessageAdded)]
private void OnTTSMessageAdded(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Added : {ttsArgs.Message.Text}");
}

[TextToSpeechEvent(TextToSpeechStatus.TTSMessageRemoved)]
private void OnTTSMessageRemoved(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Removed : {ttsArgs.Message.Text}");
}

[TextToSpeechEvent(TextToSpeechStatus.TTSMessageUpdated)]
private void OnTTSMessageUpdated(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Updated : {ttsArgs.Message.Text}");
}

Dynamic Async Events

Make sure the parameter in your method matches the event type. See what parameter is required for each User Event here. Dynamic events will dynamically invoke your method at runtime on every game object that has a dynamic event attribute. Because of this there is no need to Subscribe/Unsubscribe from events with the usual +=/-=

Remember to use async void or async Task or else the event may run synchronously

More information on the methods called in any async method can be found here. Unity Gaming Services Examples. They are direct copies from Unity's docs. These are just examples and don't mimic real world use cases

[TextToSpeechEventAsync(TextToSpeechStatus.TTSMessageAdded)]
private async void  OnTTSMessageAddedAsync(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Added : {ttsArgs.Message.Text}");
    await SavePlayerData();
}

[TextToSpeechEventAsync(TextToSpeechStatus.TTSMessageRemoved)]
private async void  OnTTSMessageRemovedAsync(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Removed : {ttsArgs.Message.Text}");
    await SavePlayerData();
}

[TextToSpeechEventAsync(TextToSpeechStatus.TTSMessageUpdated)]
private async void  OnTTSMessageUpdatedAsync(ITTSMessageQueueEventArgs ttsArgs)
{
    Debug.Log($"TTS Message Has Been Updated : {ttsArgs.Message.Text}");
    await SavePlayerData();
}

Last updated