# テキストプリンター

テキストプリンターはテキストメッセージを表示するためのアクターで、時間をかけて表示させることができます。

プリンターの動作はコンテキストメニューの Naninovel -> Configuration -> Printers で設定できます。利用可能なオプションについては、コンフィグガイド をご覧ください。プリンターのリソースマネージャーへは、コンテキストメニューの Naninovel -> Resources -> Printers からアクセスできます。

naninovelスクリプトでは、テキストプリンターは基本的に @print コマンドと @printer コマンドで制御します:

; `Dialogue` プリンターをデフォルトにする。
@printer Dialogue

; `Fullscreen` プリンターをデフォルトにする。
@printer Fullscreen

; デフォルトのプリンターで文章を表示。
@print text:"Lorem ipsum dolor sit amet."

; 上記を一般テキストで表示。
Lorem ipsum dolor sit amet.

; 上記を キャラクター "Felix" に紐付けて表示。
Felix: Lorem ipsum dolor sit amet.

組み込みプリンターはUIとして実装されていますが、それらはアクターです。すべてのアクター関連の可視の変更(アニメーションの表示/非表示)は、対応するコマンドまたはアクター構成で設定された時間が使われます。例えば @showPrinter コマンドの time パラメータは、アニメーションの表示時間を制御します。指定されていない場合、プリンタアクターコンフィグプロパティの Change Visibility Duration がデフォルトの時間になります。この場合、プリンターUIプレハブのルートにある Fade Time プロパティは無視されます。

# 自動読み進み機能

自動読み進み機能は、i コマンドを操作するスクリプトを自動で実行します。

"i" コマンドは、ユーザーが Continue 操作を入力をするまで実行が停止されます。これはよくテキストの表示後に使われます。自動読み進みモードでは、"i" コマンドは停止する代わりに一定時間スクリプトの実行を待って完了し、次のコマンドを実行します。待機時間は、直前に表示されたテキストメッセージの長さに依存し、ゲーム設定の "Print speed" にで変更できます。

自動読み進みモードは、 AutoPlay 入力(スタンドアロン入力モジュールのデフォルトではAキー)またはコントロールパネルの "AUTO" ボタンを使用して切り替えることができます。

# スキップ機能

テキストスキップ機能により、[@print ]コマンドの実行を早送りして、テキストの表示プロセスを効果的にスキップできます。

スキップモードは、Skip 入力(スタンドアロン入力モジュールのデフォルトでは Ctrl キー)またはコントロールパネルの "SKIP" ボタンをで切り替えることができます。

デフォルトでは、スキップモードは、過去にすでに実行されたコマンドの実行中にのみ適用されます。例えばユーザーが表示テキストをまだ読んでいない場合、スキップモードは使用できません。 これは、ゲーム設定の "Skip mode" で変更できます。

# テキストバックログ

プリンターバックログは、ユーザーが以前に表示したテキストを再表示できる機能です。

バックログはメインゲームループ中にいつでも表示できます。ShowBacklog を入力(スタンドアロン入力モジュールではデフォルトで Lキー)するか、コントロールパネルの "LOG" ボタンを押すと起動します。

# ダイアログプリンター

ダイアログプリンターは、ウィンドウ内のテキストを柔軟な高さで表示します。最初は画面サイズの約3分の1で、コンテンツにより多くのスペースが必要になると高さを増やします。 ダイアログプリンターは、テキストウィンドウの上のラベルに、関連するキャラクター名も表示します。

Dialogue Printer

# ワイドプリンター

ワイドプリンターは、ダイアログプリンターによく似ていますが、ワイドディスプレイ用に調整されたパネルレイアウトが一部変更されています。ワイドプリンターは、キャラクターアバター 機能もサポートしています。

Wide Printer

# フルスクリーンプリンター

フルスクリーンプリンターは、ウィンドウ内のテキストを静的なサイズで表示します。画面サイズの大部分を占め、"NVL" モードとも呼ばれる大量のテキストを表示するためにインデントされています。

Fullscreen Printer

フルスクリーンプリンターは、デフォルトでは後続の各プリントコマンドでテキストをリセットしません。代わりに、必要に応じて @resetText コマンドでプリンターの内容を消去します。プリンターアクターの設定メニューで 自動リセット を有効にすることで変更できます。

フルスクリーンプリンターで処理される各プリントコマンドでは、デフォルトで、表示するテキストの前に改行を2行追加します(プリンターの現在のコンテンツが空の場合を除く)。 これは、プリンターアクター構成メニューで Auto Line Break をゼロに設定することで無効にできます。

以下は、フルスクリーンプリンターの使用例です。

; フルスクリーンプリンターを起動。
@printer Fullscreen

; 次の行は、改行2行で区切って同じウィンドウに表示されます。
Lorem ipsum dolor sit amet. Proin ultricies in leo id scelerisque.
Praesent vel orci luctus, tincidunt nisi et, fringilla arcu. In a metus orci.
Maecenas congue nunc quis lectus porttitor, eget commodo massa congue.

; プリンターの内容をクリア。
@resetText

; 更に行を表示。
Morbi ultrices dictum diam, in gravida neque vulputate in.
...

# チャットプリンター

チャットプリンターはウィンドウ内の吹き出し内にテキストを表示します。コンテンツは垂直方向にスクロール可能で、モバイルメッセージアプリに似ています。キャラクターごとにテキストを表示するのではなく、"タイプ中" アニメーションを一定時間かけてエフェクトで表示し、即座にメッセージを表示します。チャットプリンターは キャラクターアバター をサポートしています。

Chat Printer

# 吹き出しプリンター

吹き出しプリンターは、漫画/コミック風のテキスト表示に利用できます。

組み込みの吹き出しプリンターは、"Left" と "Right" の2つの外観をサポートしています。これらは、キャラクター対してどちらの側に配置するか、プリンターの向きを揃えるために使用できます。

@printer Bubble.Left pos:42,80 visible:false time:0
@show Bubble wait:false
Misaki: Aliquam lobortis!
@char Nanikun.Happy wait:false
@printer Bubble.Right pos:53,55 visible:false time:0
@show Bubble wait:false
Nanikun: Integer nec maximus elit, eget posuere risus.

一度に複数の吹き出しプリンター(または他の)を表示するには、カスタムプリンターを追加します。

# カスタムプリンターの追加

組み込みのテンプレートからカスタムテキストプリンターを追加したり、新しいプリンターを新規に作成したりできます。たとえば、組み込みの Dialogue テンプレートをカスタマイズしてみましょう。

アセットコンテキストメニューの Create -> Naninovel -> Text Printers -> Dialogue から、ダイアログプレハブを、Naninovelパッケージの外に作ります。例えば Assets/TextPrinters フォルダーなど。

プレハブを編集: フォント、テクスチャの変更、アニメーションの追加など。利用可能なUIビルディングツールについては uGUIのUnityドキュメント をご覧ください。UIカスタムガイド にチュートリアル動画と、uGUIの操作に関するサンプルプロジェクトもいくつかあります。

プリンタのマネージャGUIを使用して、プレハブをエンジンリソースに公開します。コンテキストメニューの Naninovel -> Resources -> Printers からアクセスできます。+ (プラス)ボタンで新しいレコードを追加し、アクターID(プレハブ名により変わります)を入力し、レコードをダブルクリックしてアクター設定を開きます。プリンタープレハブを Resource フィールドにドラッグアンドドロップします。

これで、@printer コマンドから新しいプリンターを起動できます。コマンドにはマネージャーで設定したアクターIDを指定します。

@printer MyNewPrinter

カスタムプリンターの追加は、デモプロジェクト をご覧ください。プレハブは Assets/Prefabs/PimpedPrinter.prefab として保存されます。Kohakuちゃんが自分でプリンターを作成しようとすると、プリンターがデモに表示されます。

また、ITextPrinterActor インターフェイスを手動で実装することにより、プリンターをスクラッチで作成することもできます。詳細については、カスタムアクターの実装 ガイドを参照してください。

テキストコンポーネントを変更するときは、1.0未満の高さのラインはサポートされないことに注意してください(この場合、レンダリングされたラインが重なり、表示エフェクトを適用できなくなります)。垂直方向のクリアを減らしたい場合は、テキストフォント自体を編集することを検討してください。

# テキスト表示エフェクト

デフォルトでは、テキストメッセージの表示時にグラデーションフェード効果が適用されます。ただし、より一般的な "タイプライター" スタイルを使用する場合は、Slide Clip Rect を無効にし、Revealable Text コンポーネントの Reveal Fade Width プロパティをゼロに設定することで、フェード効果を無効にできます。Revealable Text コンポーネントは一部の組み込みプリンターのテキストオブジェクトに適用されます。たとえば、Fullscreen プリンタープレハブの Fullscreen/Content/Printer/Text ゲームオブジェクトに紐付いていることがわかります。

# テキスト表示サウンド

組み込みプリンターの場合、表示エフェクト(現在は DialogueFullscreenWide)をサポートしており、キャラクターが表示されたときにSFXを再生するようにオプションで設定できます。

上記の"カスタムプリンターの追加"ガイドに従って、組み込みのプリンターからカスタムプリンターを作成します。それからプレハブのルートオブジェクトに紐づいている Revealable Text Printer Panel コンポーネントを見つけ、文字が表示された時に再生するSFXを Reveal Sfx に設定します。利用可能なオプションの実際のリストは、Naninovel -> Resources -> Audio メニューで追加したオーディオリソースに基づいています。

Chars SFX リストプロパティを使用して、複数のSFXを特定の文字にマップすることもできます。次の図は設定を表しています。"Keystroke2" SFXはスペースで再生されます。"Explosion" はDdF149*の文字で再生されます。%の文字は何も再生しません。"Keystroke1" は他の全ての文字で再生されます。

またはキャラクターコンフィグメニューで Message Sound を設定して、キャラクター固有のサウンドを、話者であるキャラクターのテキストが表示されたときに、再生することができます(どのテキストプリンターがメッセージを印刷しているかに関係なく)。メッセージ話者の Message Sound とデフォルトプリンターの Reveal SFX の両方が割り当てられている場合、プリンターのデフォルトの Reveal SFX ではなく Message Sound が再生されます。Chars SFX を設定すると、話者の Message Sound が指定されているかどうかに関係なく、常に再生されます。

テキスト表示サウンドは非常に高頻度に再生され(メッセージ表示スピードによって異なります)、同じサウンドが再生されるとクリップされます。そのため、対応するオーディオクリップは非常に短くてシャープなものにしてください(最初に一時停止/無音がないこと)。

表示サウンドがうまくいかない場合(たとえば、サウンドが各文字表示で再生できるほど短くない)、TextPrinterManager エンジンサービスOnPrintTextStartedOnPrintTextFinished イベントで、表示に合わせて再生/停止させてみてください。ビジュアルスクリプティング ソリューションを利用したい方は、これらのイベントも PlayMaker に公開されます。

# TextMesh Pro

Naninovel は TextMesh Pro をサポートしています。TMPro UIテキストコンポーネントで実装された組み込みの TMProFullscreenTMProDialogueTMProWideTMProBubble プリンターを通じています。

TMProプリンターを使う前に、UnityプロジェクトにTextMesh Proがインストールされていることを確認してください。 TextMesh Proは、Window -> Package Manager メニューのパッケージマネージャーからインストールできます。

TMProプリンターを選択して、naninovelスクリプトで @printer コマンドを使用してすべての表示コマンドをルーティングすることができます:

; TMPro プリンターダイアログを起動
@printer TMProDialogue
; 起動したプリンターを使用してテキストを表示
Hello World!

カスタムTextMesh Proフォントアセットまたはマテリアルを作成するときは、フォントマテリアルに Naninovel/RevealableTMProText シェーダーを適用することを忘れないでください。そうしないと、テキスト表示エフェクトが機能しません。

# テキストスタイル

テキスト内でリッチテキストタグまたは @style コマンドを使用して、さまざまなテキストスタイルを適用できます。

デフォルト(TMProではない)のテキストプリンターは Unityのテキストレンダリングシステム をベースにしており、色、サイズ、太字、斜体などの基本的なテキストスタイルをサポートしています。詳細は テキストタグガイド をご覧ください。

TextMesh Proプリンターは、幅広い追加テキストタグをサポートしています。詳細については、公式ドキュメント を参照してください。

ルビ (フリガナ、振り仮名) のサポートも、Naninovel's TextMesh Pro プリンターのカスタム <ruby> タグで提供しています。ルビを付けたい文字をルビタグで囲み、タグの中にルビを指定してください。例:

Lorem <ruby="VERY">ipsum</ruby> dolor sit amet.

— メッセージがランタイムで表示されると、"VERY" というルビが、"ipsum" という文字の真上に表示されます。

さらに、プリンタープレハブに紐づいている RevealableTMProText コンポーネントのプロパティを変更することで、ルビのサイズと垂直のオフセットを設定できます。

以下の動画はルビタグのデモです。

最終更新 日: August 5, 2020