Unityで3Dシーン内埋め込みYouTubeプレーヤーを作る

ゲーム開発
広告だよ!!!たくさんクリックしてね

今オンラインゲームを作っているのですが、みんなで動画見れたら楽しいだろうな~って思ってゲーム内YouTubeプレーヤーを実装しました。どうやったか解説していこうと思います。

https://twitter.com/avaice_/status/1363426739259535362
遊ぶ相手いないんですけどね

もくじ

必要なもの

SimpleUnityBrowser

UnityPackageのダウンロードリンクが切れているので、アーカイブから拾いました。以下よりダウンロードしてください

http://web.archive.org/web/20200712032136/https://bitbucket.org/vitaly_chashin/simpleunitybrowser/downloads/SimpleWebBrowser-v0.1.2.unitypackage

Jediumという会社が内部で作成していたものを厚意でオープンソース化してくださったようです。感謝。

つくりかた

1.ダウンロードした「SimpleWebBrowser-v0.1.2.unitypackage」をダブルクリックしてプロジェクトへimportしてください

2.スクリプトの変換をするか聞いてくるのでゴーアヘッドしてください

3.インポートしたフォルダーにあるInworldBrowserをステージに置いて、上手く位置、サイズを調整してください

4.子オブジェクトをすべてチェック外して無効化してください

こんな感じに

5.ここまでやると大体こんな感じになると思います

6.InworldBrowserにアタッチされているスクリプトのパラメータをいじって動作確認します

縦横比はゲーム内で画面として使うオブジェクトの縦横比に合わせてください。※あんまり解像度を高くするとレンダリングも重くなって良いこと無いと思います。ほどほどに設定してください。

YouTube埋め込みアドレスは

「https://www.youtube.com/embed/動画ID?autoplay=1」です。

動画IDはYouTubeのURL見れば何となくわかると思いますが、分からなければググってください。

ここまでしっかり設定できていれば、こんな風に動作すると思います(音量注意)

7.ブラウザ入力操作の無効化

もし動画内のマウス・キーボード操作を無効化したければ、WebBrowser.csを以下の通りに変更します。

OnMouseUp, OnMouseDown, OnMouseOver, CheckKey関数の開始直後に「return;」を追加します。これでクリック処理、キーボード処理を無効化できました。

ほかのスクリプトから再生動画を変更したい

WebBrowser.csに以下の関数を追加してください。

        //書きたし
        public void ChangeURL(string _s)
        {
            // MainUrlInput.isFocused
            _mainEngine.SendNavigateEvent(_s, false, false);

        }

ほかのスクリプトではこんな感じに。

「_WebBrowser」にはインスペクタからInworldBrowserをアタッチしてください。

    public SimpleWebBrowser.WebBrowser _WebBrowser;

    // Update is called once per frame
    void Update()
    {
         _WebBrowser.ChangeURL("変更したいURL名");
    }

問題点

・音量MAXで再生されます。調整できないので不便です。(しかし、Unity側でなくブラウザ側で制御する方法があると思います。iframe player apiだかなんだか。いつかやります。)

・Unity内の3D音声に対応していません。

おわりに

結構Windows向けビルドでWebViewを使う方法って限られてるみたいですが、SimpleUnityBrowserはかなり簡単に扱えるので一度試してみると面白いと思います。

タイトルとURLをコピーしました