本日はMicrosoftMeshの小ネタ枠です。
Meshの環境作成チュートリアルMesh 101を試した内容を記事にします。
今回はビジュアルスクリプトを使って動画を再生するボタンを作成する手順の続きです。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
ビジュアルスクリプトを使ってビデオを再生する
Mesh 101ではビデオオブジェクトと画像オブジェクトを切り替えることでビデオの再生/停止を実現します。
VideoPlayerオブジェクト配下のVideoオブジェクトがビデオの再生オブジェクト、VideoStillオブジェクトが画像オブジェクトです。
VideoオブジェクトにはVideo Playerコンポーネントが設定されており、オブジェクトが有効になるとビデオの再生が始まります。
デフォルトではオブジェクト自体が無効化されています。
VideoStillオブジェクトには画像が設定されており、ビデオのサムネイルを表示しています。
デフォルトではこちらのオブジェクトが有効化されています。
再生状態(isPlaying)の変数の切り替りに応じて、このオブジェクトの有効/無効を切り替えてビデオの再生を実行します。
再びPlayVideoButtonオブジェクトの[Script Graph]画面を開きます。
ビデオオブジェクトを有効化する
初めに再生状態(isPlaying)が再生(True)に切り替わった場合のフローを作成します。
IFノードのTrueポートをクリックドラッグしてNodeメニューを表示し、Set Activeノードを選択して追加します。
Set Activeノードは対象オブジェクトの有効/無効を切り替えます。
今回はVideoオブジェクトを対象にしたいので、HierarchyからVideoオブジェクトをドラッグして参照を設定します。
更にVideoオブジェクトはここで有効化したいので[Value]にチェックを入れます。
次に再生中VideoStillオブジェクトは不要になるので、もう1つSet Activeノードを接続してVideoStillオブジェクトの参照を設定します。
こちらはオブジェクトを無効化したいので[Value]にチェックを外しておきます。
ボタンの文言を変更する
これでボタン押下と共にビデオが再生されるようになりました。
ビデオ再生中、ボタンはビデオの停止ボタンになるので再生中はボタンの文言が[Stop]になる処理を追加します。
ビデオ再生時のフローに[Text Mesh Pro: Set Text]ノードを追加します。
Hierarchyから変更対象のLabelオブジェクトをドラッグして参照を設定します。
テキストフィールドにStopと入力します。
これでビデオ再生中にボタンの文言が[Stop]に変わるようになりました。
ビデオオブジェクトを無効化する
次に再生状態(isPlaying)が停止(False)に切り替わった場合のフローを作成します。
IFノードのFalseポートから先ほどとは逆の処理を行うフローを作成します。
Videoオブジェクトを無効化し、VideoStillオブジェクトを有効化し、ボタンの文言を[Play]に変える以下のフローを作成します。
他のユーザと体験を共有する
イベントをトリガーするアバターのみにイベントを体験させたい場合や、トリガーするとシーン内の全てのユーザにイベントを体験させたい場合があります。
これはLocal Script Scopeコンポーネントを設定して制御します。
Script Machineコンポーネントを設定したPlayVideoButtonオブジェクトにLocal Script Scopeコンポーネントを追加します。
シーン内の全てのユーザにイベントの体験を共有させたい場合は[Share visual script variables on this Game Object]のチェックを入れます。
これで再生状態(isPlaying)が共有され、イベントのトリガーが共有されるようになります。
動作テストを行う
ビデオの再生/停止が正常に実行できるか、イベントの体験が共有されるか確認を行います。
複数人の共有を確認したい場合はMesh Emulator Setupオブジェクトの[Initial Screen Count]を2以上に設定してシーンを再生します。
一方のアバターでボタン押下してビデオを再生/停止し、もう一方のアバターでも同様にビデオが再生/停止されていることを確認します。
次回は情報ダイアログを表示してみます。
bluebirdofoz.hatenablog.com