top
技術

はじめに

VRChat では、VRChat 公式の SDK に含まれている 動画プレイヤー用の Prefab をシーンに導入することで、 YouTube の動画を視聴することができます。

この公式の動画プレイヤーの使い勝手を向上させるために、色々な方が様々な拡張アセットを製作しており、 Booth などを通して、一般に公開しています。

自分は、今まで動画プレイヤーを導入するようなワールドを製作していなかったこともあり、動画プレイヤーにあまり興味がなかったのですが、ふと、YouTube の動画検索に関して不便に感じたことがあったのを思い出し、検索ができるギミックを作れるのかどうか確かめてみました✨

作ってみた

という訳で、サクッと YouTube 検索ギミックを作ってみました。

下記の動画から、実際に YouTube の検索をしている様子を見ることができます。

仕組みとしては、VRChat ワールド (Unity) 側から、自作の YouTube 検索サーバーに API 経由でリクエストをして、検索結果をレスポンスとして受け取りものです。よくあるパターンですね😊

Image

作ってみて分かったのですが、VRChat で外部サイトに動的な入力情報を送信する場合、VRC URL というコンポーネントを使う必要があり、このコンポーネントには大きな制限があります。

具体的にいうと、VRC URL は基本的に Unity Editor 上でしか入力情報を編集できません (ランタイム時に動的に VRC URL を改変できない)

唯一、情報を動的に U#スクリプトで受け取る手段があって、それは VRChat でユーザーに直接、特殊な VRC 専用の Input Filed に テキストを入力してもらう方法です。

動画では、3つ縦に並んだ入力欄のうち、3つ目が実際に外部にデータを送信するための専用 Input Field で、残り2つが通常の Input Field です。

この制限があるため、外部にテキスト情報を送るために、本来なら1つで済むはずの入力欄が3つ必要になってしまいました・・・

ユーザービリティが悪い・・・

また、他にも制限があって、外部サイトにリクエストをする場合、VRC SDK の VRCStringDownloaderVRCImageDownloader を使う必要があるのですが、リクエストは5秒おきでしか行うことができません。5秒以内にリクエストしても、内部的にキュー (待ち行列) に溜まる仕組みになっているようです。(2024年10月時点)

このような制限のある中、多少の迂回策は取りましたが、なんとか YouTube 検索のギミックを作れて良かったです。

おわりに

今回作ったギミックは、一応有料の外部サーバーを利用していることもあり、Booth などで配布はしませんが、 (そもそも、自分の Booth 持ってない) 折角作ったギミックですし、一部に需要がありそうなので、フレンドのワールドに導入してもらうことになりました✨

たまには、動画系のギミック作ってみるのも良いですね!

参考