Unityに関連する記事です

ムービー再生のデバッグ


 ボタンを配置し、それをクリックした際にムービーが再生されるようにします。


<実装動画 
動画ファイルへのリンク


<実装動画◆
動画ファイルへのリンク


事前準備


 事前準備として、VideoPlayer 関連の機能を用意しておく必要があります。

 こちらの2つの手順を実装してからこの手順を進めてください。
ムービー再生機能の準備
ムービー再生機能の準備



設計


 自分で作った新しい処理をゲーム内に組み込む場合、どのように組み込んでいいのか迷うことが多いです。
そこでまずはデバッグ機能を作成して、新しい機能が正常に動作するかを検証することから始めましょう。

 今回の VideoPlayer のケースであれば、VideoPlayer を再生する機能自体は完成しているはずですが、
それを実際のゲームの中では、どのような場面で利用できるようにするかを考える必要があります。
例えば、会話シーンの最初にムービーを再生する演出を入れるのか、ゲームオブジェクトに触れたら再生するのか、
そういったムービーを利用するシチュエーションが色々と考えられます。

 どの場合であっても、なんらかのトリガーとなるイベントがあってからムービーを再生することになると思いますので、
まずは最初の段階として、ゲーム画面にボタンを配置し、そのボタンを押す、というイベントをトリガーとして
ムービーを再生する機能を紐づけてみたいと思います。

 プログラムの基本は、学習と同じでこつこつと積み上げて築いていくものです。いきなりすべてを実装する必要はありません。
慣れてくれば、自分のイメージしているシチュエーションに対してムービーを再生する機能を組み込むことも出来ますが、
まずは今回のように、デバッグによる動作検証も兼ねた形で、ゲーム内の処理と作ってある機能とをつなげていくことを考えてください。


Canvas 作成


 ボタンを作る必要がありますので、Canvas を作成し、その子オブジェクトとしてボタンを作成します。
新しい Scene を作成して作業すると、デバッグ用のシーン、本番用のシーンという形で、シーン別に管理が行えます。


完成図


 下記のような状態を目標にします。


<ヒエラルキー画像>



<Scene ビュー画像>



<Game ビュー画像>




Canvas ゲームオブジェクトを作成する


 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、UI → Canvas を作成してください。
名前を Test_Canvas といった、わかりやすい名称に変更します。


<インスペクター画像>




 Canvas を作成したら、CanvasScaler コンポーネントの設定を見直してください。


<Scene ビュー画像>



Canvas ゲームオブジェクトの子オブジェクトとして Button ゲームオブジェクトを作成する


 Canvas ゲームオブジェクトの上で右クリックをしてメニューを開き、UI → Button を作成してください。
Legacy の Button でも、TextMeshPro の Button でも、どちらでも構いません。
名前もわかりやすい名前に変えておきましょう。


<インスペクター画像 Button>



 Text ないし、TextMeshPro には自由にフォントなどの設定を行ってください。
ただし画面に表示する文字については、ムービー再生用のボタンであることを明示してください。


<インスペクター画像 Text>



<Scene ビュー画像>



<Game ビュー画像>




MoviePlayTest スクリプトを作成する


 ボタンを押した際に、ムービーを再生する機能を実行するため、スクリプトを作成して紐付けします。

 具体的には、ボタンを押した際の OnClick イベントの部分に、
VideoClipManager スクリプトに定義している、ムービー再生用の PrepareVideoClip メソッドを登録します。

 このようにすることによって、ボタンには「ムービーを再生する」という機能が備わり、ムービー再生用のボタンとしての役割が生まれます。


MoviePlayTest.cs

<= クリックすると開きます。


 スクリプトを作成したらセーブします。


UniRx を利用した場合


 作成した MoviePlayTest スクリプトにおいて、ボタンの重複(連続)クリックを防ぐには、UniRx を利用する方法が大変効果的です。
UniRx がインポートされていない場合にはこの手順はスキップしてください。


MoviePlayTest.cs

<= クリックすると開きます。


 スクリプトを作成したらセーブします。


Test_Canvas ゲームオブジェクトに MoviePlayTest スクリプトをアタッチし、設定を行う


 Test_Canvas ゲームオブジェクトに作成した MoviePlayTest スクリプトをドラッグアンドドロップしてアタッチします。

 インスペクターを確認し、Button コンポーネントの情報を登録するための変数が表示されていますので、
Button コンポーネントのアタッチされているゲームオブジェクトをアサインして登録します。

 MoviePlayTest スクリプト内の処理により、この MovieNo 変数に設定した番号と
VideoDataSO スクリプタブル・オブジェクト内の各 VideoData の VideoNo とが紐づいています。

 任意の番号を設定してください。ボタン押下時に、その番号のムービーが再生されます。
ただし、VideoDataSO 内に存在しない VideoNo を指定してしまうとエラーになります。


<インスペクター画像>



 以上で設定は完了です。


ゲームを実行して動作を確認する


 すべての処理の実装が完了しました。

 作成した処理を見直した上でデバッグを行い、動作の検証を行ってください。
ボタンを押すたびにムービーが再生されれば制御成功です。

 MoviePlayTest スクリプト内の MovieNo 変数の値を変えて、異なるムービーが再生されるかも確認しておいてください。
これはゲーム実行内であっても値の変更が反映されます。そのため、ムービー再生後に値を変更し、再度ボタンを押すと、
新しく設定した番号のムービーが再生されます。


<実装動画 
動画ファイルへのリンク


<実装動画◆
動画ファイルへのリンク



 以上でこの手順は終了です。

 これでボタンを押すとムービーが再生する、という形で動作の検証が済みました。
次回以降の手順では、別のイベントとムービー再生とを紐づけて、よりゲーム内の状況を考慮した形での実装を行います。

 => 次は VideoPlayer を利用したイベント処理の実装例 です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます