76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0)
|
|
#define UNITY_HELPATTRIB
|
|
#endif
|
|
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace RenderHeads.Media.AVProVideo
|
|
{
|
|
/// <summary>
|
|
/// Update a standard uGUI Text element with subtitle text as it plays from the MediaPlayer
|
|
/// </summary>
|
|
[AddComponentMenu("AVPro Video/Subtitles uGUI", 201)]
|
|
#if UNITY_HELPATTRIB
|
|
[HelpURL("http://renderheads.com/product/avpro-video/")]
|
|
#endif
|
|
public class SubtitlesUGUI : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private MediaPlayer _mediaPlayer = null;
|
|
|
|
[SerializeField]
|
|
private Text _text = null;
|
|
|
|
void Start()
|
|
{
|
|
ChangeMediaPlayer(_mediaPlayer);
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
ChangeMediaPlayer(null);
|
|
}
|
|
|
|
public void ChangeMediaPlayer(MediaPlayer newPlayer)
|
|
{
|
|
// When changing the media player, handle event subscriptions
|
|
if (_mediaPlayer != null)
|
|
{
|
|
_mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
_mediaPlayer = null;
|
|
}
|
|
|
|
_mediaPlayer = newPlayer;
|
|
if (_mediaPlayer != null)
|
|
{
|
|
_mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
|
|
// Callback function to handle events
|
|
private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.SubtitleChange:
|
|
{
|
|
string text = _mediaPlayer.Subtitles.GetSubtitleText();
|
|
|
|
// Change RichText for Unity uGUI Text
|
|
text = text.Replace("<font color=", "<color=");
|
|
text = text.Replace("</font>", "</color>");
|
|
text = text.Replace("<u>", string.Empty);
|
|
text = text.Replace("</u>", string.Empty);
|
|
|
|
_text.text = text;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} |