레퍼런스
동영상 플레이어, 그 부품, 에디터 설정 API의 모든 멤버와, 각각에 딸린 규칙을 정리했습니다.
모두 Udonite.Video에 있습니다. 에디터 API는 Udonite.Video.Editor.VideoSetup입니다.
VideoPlayer
VRChat의 AVPro 또는 Unity 비디오 플레이어와 같은 GameObject에 둡니다. VRChat은 동영상 이벤트를 그 오브젝트 위의 비헤이비어에만 보내기 때문입니다.
인스펙터
| 필드 | |
|---|---|
player |
재생하는 VRChat 비디오 플레이어 |
avPro |
player가 AVPro일 때 켭니다 |
capture |
AVPro 전용. Create Video Player가 설정합니다 |
target |
Unity 플레이어 전용. Create Video Player가 설정합니다 |
speakers |
볼륨과 음소거가 설정하는 AudioSource |
playlist |
대기열이 비면 재생합니다. 선택 사항 |
autoplay |
인스턴스가 열릴 때 재생목록을 시작합니다 |
startLocked |
잠긴 상태로 인스턴스를 엽니다 |
moderators |
언제든 플레이어를 조작하고 잠금을 바꿀 수 있는 표시 이름 |
tolerance |
클라이언트가 어긋나도 되는 초. 넘으면 다시 탐색합니다. 기본 1 |
startVolume |
각 플레이어가 바꾸기 전까지의 볼륨. 0부터 1 |
명령
동영상을 바꾸는 명령은 먼저 잠금을 확인합니다. 거부된 호출은 아무것도 바꾸지 않고, Status에 4초 동안 안내를 띄웁니다.
| 멤버 | |
|---|---|
PlayUrl(VRCUrl) |
대기열은 그대로 두고 링크를 지금 재생합니다 |
Enqueue(VRCUrl) |
링크를 대기열에 넣고, 아무것도 재생 중이 아니면 재생합니다. 최대 20개 |
PlayEntry(int) |
재생목록 항목을 재생합니다 |
PlayFromQueue(int) |
대기열 항목을 지금 재생하고 대기열에서 뺍니다 |
Play() |
재개합니다. 아무것도 재생 중이 아니면 대기열이나 재생목록의 다음 것을 시작합니다 |
Pause() |
모두를 위해 일시정지합니다. 라이브 방송은 일시정지할 수 없습니다 |
TogglePause() |
재생 중이면 Pause, 아니면 Play |
Seek(float) |
동영상의 비율(0부터 1) 위치로 탐색합니다 |
SeekTo(float) |
초로 지정한 위치로 탐색합니다 |
Skip() |
대기열이나 재생목록의 다음 것을 재생하고, 없으면 멈춥니다 |
Stop() |
대기열은 남겨 두고 모두를 위해 멈춥니다 |
Reload() |
이 클라이언트에서만 링크를 다시 불러오고, 방의 위치로 다시 탐색합니다 |
SetLooping(bool) |
지금 동영상을 모두에게 반복합니다 |
SetLocked(bool) |
잠그거나 풉니다. 인스턴스 오너, 마스터, 모더레이터만 할 수 있습니다 |
RemoveFromQueue(int) |
대기열에서 하나를 뺍니다 |
ClearQueue() |
대기열을 비웁니다 |
SetVolume(float) |
이 플레이어 자신의 볼륨. 0부터 1 |
SetMuted(bool) |
이 플레이어 자신의 음소거 |
상태
| 멤버 | |
|---|---|
int Revision |
시계를 빼고, UI가 보여주는 것이 바뀔 때마다 움직입니다 |
int State |
Idle, Loading, Playing, Paused, Failed. VideoPlayer의 상수입니다 |
bool IsIdle, IsLoading, IsPlaying, IsPaused, HasFailed |
같은 것을 하나씩 |
bool HasVideo |
아직 재생 전이라도 링크가 정해져 있음 |
bool IsLive |
끝이 없는 스트림을 재생 중. 일시정지도 탐색도 할 수 없습니다 |
bool CanSeek |
재생 중이거나 일시정지 중이고, 라이브가 아님 |
bool Showing |
스크린에 화면이 나오고 있음 |
string Title |
재생목록 제목, 또는 붙여 넣은 링크의 짧은 라벨 |
string AddedBy |
지금 동영상을 추가한 사람. 재생목록이면 비어 있음 |
string Url |
지금 링크 |
string Status |
안내, 문제, 또는 Loading, Playing, Live, Paused, Nothing playing |
string Problem |
마지막 불러오기가 실패한 이유. 다음 불러오기까지 남습니다 |
float Position |
이 클라이언트에서의 재생 위치(초) |
float Duration |
길이(초). 라이브면 0 |
float Progress |
재생 위치를 길이로 나눈 값. 0부터 1 |
bool Looping, bool Locked |
동기화되는 설정 |
float Volume, bool Muted |
이 플레이어 자신의 소리 |
int QueueCount |
기다리는 항목 수 |
string QueueTitle(int), string QueueAddedBy(int) |
항목 하나 |
string NextTitle |
다음에 나올 것. 대기열이나 섞지 않은 재생목록에서 |
int PlaylistEntry |
재생 중인 재생목록 항목, 또는 NoEntry |
string OwnerName |
지금 플레이어를 소유한 사람 |
bool CanControl, bool CanModerate |
로컬 플레이어가 할 수 있는 것 |
bool MayControl(VRCPlayerApi), bool MayModerate(VRCPlayerApi) |
같은 것을, 누구에 대해서든 |
Texture Picture |
지금 프레임. 직접 만든 스크린용 |
VideoScreen
머티리얼이 Udonite/Video/Screen을 쓰는 렌더러라면 어디에든 붙일 수 있습니다. 동영상을 aspect(면의 너비 나누기 높이)에 맞춰 레터박스합니다. 플레이어 하나를 스크린 몇 개에든 비출 수 있습니다.
VideoPlaylist
| 필드 | |
|---|---|
urls |
링크. 순서대로 |
titles |
링크마다의 제목. 비어 있으면 링크를 보여줍니다 |
shuffle |
다음 항목을 무작위로 고릅니다. 재생 중인 것은 고르지 않습니다 |
repeat |
마지막 다음에는 처음으로 돌아갑니다. 기본으로 켜짐 |
부품
모든 부품에는 player가 있고, VideoPart를 상속합니다.
| 부품 | 필드 |
|---|---|
VideoButton |
command, button, icon, activeSprite, inactiveSprite, activeColor, inactiveColor. Run()으로 코드에서 명령을 실행합니다 |
VideoLabel |
field, text(TextMeshPro), legacyText, prefix, emptyText |
VideoSlider |
mode(Seek 또는 Volume), slider |
VideoLinkField |
field, enterPlaysNow |
VideoShowWhen |
condition, invert, targets, spinner, spinSpeed |
VideoQueueRow |
index, content, title, detail, detailPrefix, playButton, removeButton |
VideoPart 자체에는 하위 클래스가 반드시 구현하는 Refresh()와, 재정의해도 되는 Tick(), Connect()가 있습니다. Connect는 플레이어가 준비되면 첫 Refresh 전에 한 번 실행됩니다.
VideoLinks
플레이어가 링크 문자열에 쓰는 평범한 함수로, 내 코드에서도 쓸 수 있습니다.
| 멤버 | |
|---|---|
float StartSeconds(string) |
링크가 t=나 start=로 요청한 시작 시각. 없으면 0 |
string YouTubeId(string) |
어떤 모양의 YouTube 링크에서든 동영상 ID. 없으면 빈 문자열 |
string Label(string) |
붙여 넣은 링크를 보여줄 때의 짧은 라벨 |
에디터
메뉴 항목과 인스펙터 버튼은 모두 VideoSetup을 감싼 것뿐이라, 에디터 스크립트나 에이전트도 클릭 없이 같은 일을 할 수 있습니다. 모든 호출은 만든 것을 돌려주고, Add 호출은 이미 있으면 두 번째를 만들지 않고 그것을 돌려줍니다.
| 멤버 | |
|---|---|
CreatePlayer(Vector3, Quaternion, VideoBackend) |
플레이어 한 세트. 직접 링크 파일만이라면 VideoBackend.Unity |
AddScreen(VideoPlayer, Renderer) |
아무 렌더러에 스크린 하나 더 |
AddControls(VideoPlayer), AddOverlay(VideoPlayer) |
기본 패널이나 스크린 상태 표시를, 없는 플레이어에 |
AddPlaylist(VideoPlayer, bool autoplay) |
플레이어에 재생목록 |
AddToPlaylist(VideoPlaylist, string link, string title) |
항목 하나 |
FetchTitles(VideoPlaylist) |
YouTube 항목의 빠진 제목을 YouTube에서 채웁니다 |
SetModerators(VideoPlayer, string[], bool startLocked) |
언제든 조작할 수 있는 사람 |
ConnectAudioLink(VideoPlayer) |
씬의 AudioLink를 스피커에 연결합니다 |
Apply() |
모든 Udonite 비헤이비어를 컴파일해, 스크립트에서 설정한 값을 Udon 프로그램에 전달합니다 |
메뉴 경로는 VideoMenu.Create에 있어 EditorApplication.ExecuteMenuItem에 쓸 수 있습니다.