本日は Unity の技術調査枠です。
Unityでアニメーションファイルを使って字幕の切替とタイミングの指定を行う方法について記事にします。
シーンの作成
初めに元となるサンプルシーンを作成します。
キャラクターとオーディオソースを配置して、字幕用のテキストオブジェクトを作成します。
今回、アニメーションで変更するのは表示文字のみとします。
字幕位置や文字サイズ、フォントは予め Text コンポーネントを設定して決定しておきます。
字幕変更アニメーションの作成
追加した Text オブジェクトに、字幕変更のアニメーションを設定します。
[Add Component]から Animator コンポーネントを検索してアタッチします。
次にアニメーションファイルを作成します。
Text オブジェクトを選択した状態で、メニューから Window -> Animation を選択します。
すると、Animation ウィンドウが開くので、[Create]ボタンをクリックして新規アニメーションファイルを作成します。
保存ダイアログが開くので、任意のディレクトリと保存名を指定して[保存]します。
これでアニメーションに自動遷移する AnimationController とアニメーションファイルが生成されます。
AnimationController は選択したオブジェクトの Animator コンポーネントに自動で設定されています。
このため、後はアニメーションファイルを編集するだけで、変更がオブジェクトに反映されます。
デフォルトだとアニメーションファイルの1秒当たりのサンプリング数は 60 になっています。
字幕のタイミングを指定するにはサンプリングが多すぎるのでサンプリング数を 10 に変更しました。
これで 0.1 秒単位での字幕切替のタイミング指定が行えます。
では字幕の表示タイミングを指定していきます。
例えば、1秒目のタイミングで「こんにちは」という字幕を表示してみます。
字幕を切り替えたいタイミングをクリックして選択状態にし、[Add Event]ボタンをクリックします。
Inspector ビューに関数の設定が表示されます。
イベントで呼び出す関数を指定するため、[Function]の[(No Function Selected)]をクリックします。
プルダウンが開き、指定可能な関数の一覧が表示されます。
Text コンポーネントの set_text 関数を選択します。
[Function]に set_text 関数が指定されます。
[Prameters]の[String]に表示したい文字列の「こんにちは」を入力します。
これで字幕の文字と表示タイミングを指定できました。
動作確認
Scene 画面に戻り、この状態で[再生]ボタンをクリックしてシーンを再生してみます。
1秒目のタイミングで字幕が切り替わりました。成功です。
同じように[Add Event]を追加して字幕をどんどん切り替えたり、空文字イベントを起こして字幕を消すといったことができます。
また、デフォルトだとアニメーションはループ再生されます。
ループ再生をしたくない場合は、アニメーションファイルの Inspector ビューを開き、[Loop Time]のチェックを無効にします。