Документация
Описание
Пакет для работы с Unity Video Player.
Настойка
Создание префаба и его настройка
1) Создание префаба:
Hierarchy -> ПКМ -> SilaSveta -> Video Player
2) Настройка компонентов.
Video Player (от Unity)
:
- Play On Awake - отвечает за начало проигрывание во время запуска приложения
- Wait For First Frame - отвечает за ожидание первого кадра видео
- Loop - выставляется автоматически в зависимости от Video Player Mode
- Skip On Drop - отвечает за синхронизированный вывод видео в игровом времени
Raw Image Video Player
:
Texture Settings:
- Стандартные компоненты для настройки
RawImage
, кромеUV Rect
иTexture
- Texture Mode - отвечает за тип текстуры(
auto
илиcustom
) - Auto Resize - отвечает за resize RectTransform до размеров видео клипа в VideoPlayer, отображается и учитывается только если
Texture Mode = auto
- Texture - отвечает за RenderTexture, который будет использовать VideoPlayer, отображается только если
Texture Mode = custom
Video Player Settings:
- Show First Frame - отвечает за отображение первого кадра видео, отображается только если
Play On Awake = false
-
Video Player Mode - отвечает за режим проигрывания:
- sigleFile - проигрывание выбранного файла 1 раз
- sigleFileLoop - проигрывание выбранного файла в цикле
- allFilesOneLoop - проигрывание всех файлов в цикле 1 раз, начиная с выбранного
- allFilesLoop - проигрывание всех файлов в цикле, начиная с выбранного
-
Selected Folder - указывает на выбранную пользователем папку с видео
- Кнопка Browse Clips - отвечает за выбор дерриктивы с контентом
- Selected Clip - отвечает за выбор файла для начала отображения
- Кнопка Update - отвечает за обновление найденных файлов
Subtitles:
- Subtitle Text - отвечает за поле с TMP_Text для вывода субтитров
- Selected Subs - указывает на выбранный пользователем файл с субтитрами
- Кнопка Browse Subs - отвечает за выбор файла с субтитрами
Preview:
- Preview Color - отвечает за цвет preview
- Show Preview - отвечает за отображение превью в Editor Mode
Animation State:
- Playing / Paused / Stopped - отображают и изменяют статус
VideoPlayer
- Play From Beginning - запускает видео сначала при
Playing = true
- Play Clear Preview - очищает текстуру после проигрывания видео при помощи
Playing = true
- Pause Frame - кадр для остановки при
Paused = true
(еслиPause Frame = -1
, то пауза поставится на текущем фрейме)
Дополнительная информация
1) Для определения конца видео следует использовать event - VideoPlayer.loopPointReached
2) Для определения времени(в секундах) следует использовать:
VideoPlayer.clockTime
- для получения времени проигрывания
VideoPlayer.frameCount/VideoPlayer.frameRate
- для получения длины клипа
3) Поддерживаемые форматы
Для видео:
- asf
- avi
- dv
- m4v
- mov
- mpg
- mpeg
- ogv
- vp8
- webm
- wmv
Для субтитров:
- srt
4) Разде Animator State
Для добавления ключей Playing
Paused
Stopped
в Animator:
Animation -> Add Property -> Video Player Name -> Raw Image Video Player -> key
Для повторного проигрывания singleFile
видео через Animator следует вызвать метод ResetSingleFile()
, либо Это можно сделать 2 альтернативными способами:
StopCurrentClip()
Stopped = true
после этого следует снять флаг Stopped
(Stopped = false
) и можно заново запускать видео. При вызове метода ResetSingleFile()
флаг Stopped
снимется автоматически!
Пример работы:
5) Баги отображения
При возникновении визуальных багов в проекте следует использовать:
Edit -> Preferences -> Gl Cache -> Clean Cache
Public методы:
ResetSingleFile()
- позволяет сбросить видеоплеер перед повторным проигрываниемsingleFile
видеоHasVideo(string name)
- проверяет, находится ли видео с таким именем в выбранной папкеLoadSubtitles(string url)
- загружает субтитры по ссылке /pathPlayClipByName(string name, bool fromBeginning = false, bool clearPreview = false)
- проигрывает видео по имениPlayClipByIndex(int index, bool fromBeginning = false, bool clearPreview = false)
- проигрывать видео по IDPlayCurrentClip(bool fromBeginning = false, bool clearPreview = false)
- запустить текущее видеоPauseCurrentClip()
- поставить на паузу текущее видео на текущем кадреPauseCurrentClip(int frame)
- поставить на паузу текущее видео на кадреframe
. Еслиframe
< 0, то вызоветсяPauseCurrentClip()
PauseCurrentClip(float time)
- поставить на паузу текущее видео наTime = time
. Еслиtime
< 0, то вызоветсяPauseCurrentClip()
StopCurrentClip()
- остановить текущее видеоPlayNextClip(bool fromBeginning = true, bool clearPreview = true)
- запустить следующее видео в папкеPlayPrevClip(bool fromBeginning = true, bool clearPreview = true)
- запустить предыдущее видео в папкеbool SetClipName(string name)
- устанавливает видео по имени из выбранной папки, потом продолжает свойAnimationState
, еслиAnimationState
не используются(флагиPlaying
Paused
Stopped
=false
), то видео будет поставлено на паузуbool SetClipIndex(int index)
- устанавливает видео по индексу из выбранной папки, потом продолжает свойAnimationState
, еслиAnimationState
не используются(флагиPlaying
Paused
Stopped
=false
), то видео будет поставлено на паузу
Команда
- Разработчик Дьячков Антон