リファレンス
動画プレイヤー、その部品、エディターのセットアップ 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) |
キューから 1 件外します |
ClearQueue() |
キューを空にします |
SetVolume(float) |
このプレイヤー自身の音量。0 から 1 |
SetMuted(bool) |
このプレイヤー自身のミュート |
状態
| メンバー | |
|---|---|
int Revision |
時計以外で、UI に表示するものが変わるたびに動きます |
int State |
Idle、Loading、Playing、Paused、Failed。VideoPlayer の定数です |
bool IsIdle、IsLoading、IsPlaying、IsPaused、HasFailed |
同じものを 1 つずつ |
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) |
1 件分 |
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) |
任意のレンダラーにもう 1 枚のスクリーン |
AddControls(VideoPlayer)、AddOverlay(VideoPlayer) |
標準パネル、またはスクリーンのステータス表示を、ないプレイヤーに |
AddPlaylist(VideoPlayer, bool autoplay) |
プレイヤーにプレイリスト |
AddToPlaylist(VideoPlaylist, string link, string title) |
1 項目 |
FetchTitles(VideoPlaylist) |
YouTube の項目の足りないタイトルを YouTube から埋めます |
SetModerators(VideoPlayer, string[], bool startLocked) |
いつでも操作できる人 |
ConnectAudioLink(VideoPlayer) |
シーンの AudioLink をスピーカーにつなぎます |
Apply() |
すべての Udonite ビヘイビアをコンパイルし、スクリプトから設定した値を Udon のプログラムに届けます |
メニューのパスは VideoMenu.Create にあり、EditorApplication.ExecuteMenuItem に使えます。