画面いっぱいにテキスト表示


投稿日:2015年9月2日 | 最終更新日:2024年5月22日

全画面のテキスト

画面全体にテキストを表示するタイプのノベルゲームをの作り方のサンプルとして「走れメロス」の冒頭部分をノベルゲーム化してみました。

シナリオデータの書き方

基本的な使い方は、通常と変わりません。
PageCtrl列に以下の設定をすることで、改ページせずに同じページで次のテキストを表示したり、別のコマンドを実行することができます。

PageCtrl 内容
Input 入力待ちをした後、次のコマンドを実行
InputBr 入力待ちをした後、改行してから、次のコマンドを実行
Next 入力待ちをせずに次のコマンドを実行
空欄 改ページ入力待ち

サンプル

UIについて


テキスト表示部分の大きさは、UnityのプロジェクトビューのAdvEngine>UI>MessageWindowで変えることができます。

ノベルタイプの場合、メッセージの背景は非表示の場合が良いかもしれません。
Imageのチェックをはずしたり、ColorのA値(半透明度)を調整すると良いでしょう。

バックログ

バックログは通常であれば、1ページ内の行数によらず、大きさが固定になってしまいます。
BaclLogItemプレハブのIsMultiTextのチェックをオンにすると、テキストの行数でバックログの大きさを変えることができます。
さきほどと同じく、Imageのチェックを外すことで背景も非表示にできます。

この状態では、バックログは一ページ内に複数のボイスがある場合、このように該当箇所のテキストをクリックすることでボイスの再生が可能になります。

文字表示の高速化

この手法では、1ページ内に文字をさくさんの文字を表示する必要があります。
日本語であれば、あまり問題ならないかもしれませんが、英語圏ですと500~1000文字近く表示するケースもあります。

LegacyTextの場合

LegacyTextの場合は、アウトライン(文字の縁取り)の処理が原因で非常に高い負荷がかかることがあり、FPSが10などに低下して画面がコマ落ちしてしまうことがあります。
その問題への対応はこちらにまとめました。

TextMeshProの場合

TextMeshProは高速表示が可能なので、特別な設定等は必要ありません。