TIPS機能


投稿日:2024年2月11日 | 最終更新日:2024年3月13日

概要

ヴィジュアルノベルにおけるTIPS機能とは、テキストの一部をクリックすることで、ハイパーリンクのようにその単語の用語集などが開くというものです。
宴では、TIPSを拡張機能として追加実装可能にしました。

サンプル

動作確認としてのサンプルは、Assets/Utage/Sample/Sample.unityシーンから確認できます。

はじめから→宴4の新機能→宴の拡張タグ→リンク系のタグ と選択肢を選ぶと数ページ後TIPSタグのサンプルシナリオがあります。

TIPSタグ

Tipsをシナリオ内に記述する場合、<tips>タグを使用します。
=でTISPのID(後述)を指定する形で使用します。

<tips=Tips0>TIPS</tips>タグ
<tips=Tips1>TIPS1番</tips>と、<tips=Tips2>TIPS2番</tips>です。

TIPSデータの作成

TIPSデータは、カスタムデータコンテナの仕組みを使用してエクセル(またはCSV)データから作成します。
以下の手順でTIPSデータを作成してください。

1.ProjectWindowを右クリック → Create>Utage>CustomData>TipsDataConatainerCreatorを選択

2 . 作成した「TipsDataConatainerCreator」を「プロジェクト名/ScriptableObject/CustomProjectSettings」の「CustomDataSettings」に追加。

3. TIPS用のエクセルファイル、またはデータシートを追加
Assets/Utage/Sample/Scenarios/SampleTips.xlsにサンプルがあります。

TIPSデータのリファレンス

列の名前 説明
ID TIPSの識別ID。(すべて違うものにすること)
SystemSave TIPS情報のセーブにシステムセーブデータを使うか、通常のセーブデータにするか。
デフォルトは、TRUEでシステムセーブデータを使う。
ゲーム全体でTIPSの解放情報を共通化するなら、システムセーブデータを使うのでTRUE( または未入力)
各セーブデータごとに個別にしたい場合は、FALSEを設定する。
各セーブデータは、タイトルから開いたTIPS一覧画面では使えないので(セーブデータをまだロードしてないめ)、TIPS一覧画面で解放済みになることがなくなるので注意。
Opened TIPSの解放済みフラグのデフォルト値。未記入の場合はFALSE
最初から解放済みにしたい場合はTRUEを設定する。
Read TIPS詳細の既読済みフラグのデフォルト値。未記入の場合はFALSE
最初からTIPS詳細を既読済みにしたい場合は、TRUEを設定する。
ImageFilePath TIPSのイメージ画像のパス
Resoucres/プロジェクト名/ 以下の相対パスを指定すること
未設定の場合はTIPS詳細画面で画像表示しない
Title TIPSのタイトル(表示名)
Text TIPSの詳細テキス

ローカライズする場合は、TitleとTextの列を、「Title言語名」「Text言語名」といった形で、言語ごとに増やします。

シーンにTIP機能を追加

シーン内にTIPS用のオブジェクトを作成

TIPS管理用のオブジェクトを作成

AdvEngineのあるシーンを開いて、シーン内を右クリック → Utage>Tips>TipsManagerをクリック
AdvEngine以下にTipsManagerオブジェクトが作成されます

TIPS詳細表示用のUI画面を追加

シーン内の「Canvas-AdvUI」を選択して、右クリック → Utage>Tips>TipsDetailをクリック
Canvas-AdvUI以下にTipsDetailオブジェクトが作成されます

TIPS一覧表示用のUI画面を追加

シーン内の「Canvas-AdvUI」を選択して、右クリック → Utage>Tips>TipsListをクリック
Canvas-AdvUI以下にTipsListオブジェクトが作成されます

シーン内を編集

メッセージウィンドウのテキストの編集

AdvEngine>UI>MessageWindowManager以下の各メッセージウィンドウオブジェクトを編集します

・MessageTextsのIgonoreRaycasterが設定されていた場合はオフにして当たり判定の無効化を解除します

・MessageTexts/MessageTextオブジェクトに、「TextMeshProLinkTips」コンポーネントをAddComponentします。
TIPSの表示色はここでいつでも調整できます。
OnClickLinkイベントに「TipsManager」オブジェクトの「AdvUguiTipsUiController」のOnClickTipsInMainGameを設定してください。
これは、TIPSのテキストをクリックしたときの動作の設定です(メインゲーム画面からTips詳細画面を開きます)

・同じく、MessageTexts/MessageTextオブジェクトに「TextMeshProLinkEventHandler」コンポーネントをAddComponentします。
これがないと、TIPSのテキストに対するクリックイベントが発生しません。
OnClickNoLinkイベントに「AdvEngine>UI」オブジェクトの「AdvUguiManager」のOnPointerDownを設定してください。
これは、TIPS以外のテキストをクリックしたときの動作の設定です(通常のクリックと同じように、テキスト送りになります)

各TIPS用のオブジェクトの設定

先ほど作成した各オブジェクトにAdvEngineや互いのオブジェクトの参照設定を追加します

TipsManager

TipsDetail

TipsList

Tips一覧画面は、ボタン用のプレハブを作成して設定する必要があります。
ProjectWindowのプロジェクト名/PrefabsUI/フォルダで右クリック → Create>Utage>TipsListButtonPrefabを選択
作成したプレハブを、TipsListコンポーネントの「PrefabTipsButton」に設定します。

動作確認

基本的な設定はこれで終了です。
一応これで動作確認可能ですが、フォントの設定等がまだなのでこのままだと日本語表示ができないです。

各UIの編集と調整

TIPS詳細表示用のUI画面(TipsDetail)と、TIPS一覧画面表示用のUI画面(TipsListとTipsListButtonプレハブ)を
プロジェクトに合わせて画像等を差し替えるなどしてUIを編集してください。
特に各テキストに使用するフォントアセットを各プロジェクトのものにしないと、日本語表示などができないので、プロジェクト用のフォントアセットを設定してください。

また、UIのボタンのSEも設定していないため
各プロジェクトのSE(デフォルトでは、プロジェクト名/Audio/UI/ 以下にある)を設定してください。

TIPS一覧画面を開くボタン

TIPS一覧画面は、コンフィグ画面と同じように、タイトルからでもゲーム本編からも開けます。
「TipsManager」オブジェクトの「AdvUguiTipsUiController」コンポーネントに定義されています。
・タイトルから開く場合は
 タイトル画面を閉じてから開く場合は「OnClickTipsListFromTitle」
 タイトル画面の上に重ねて開く場合は「OnClickTipsListFromTitle(bool)」
・ゲーム本編から開く場合は「OnClickTipsListFromMainGame」
開くためのボタンを新たに作成し、OnClickイベントから上記を呼び出すようにしてください。


バックログ等

バックログ等の中でTIPSタグがあった場合は、デフォルトではアンダラーイン付きでデフォルトのテキストカラーで表示されます。
本文と同じように色を変えたい場合は、該当テキストに「TextMeshProLinkTips」と「TextMeshProLinkEventHandler」をAddComponentしてください。
クリックにも反応させたい場合は、各イベントを設定してください。

さらに拡張

この拡張機能では、各TIPS機能には、「タイトル、詳細テキスト、画像ファイルが1つ」という構成になっています。
TipsInfo.Data.RowDataにはデータテーブル1行分のデータあるので、簡易的にはそれを使って追加のデータを利用することもできます。
本格的に拡張したい場合は、TipsData、TipsInfo、TipsDataConatainer、TipsDataConatainerCreatorも継承したクラスを定義し、各Create系メソッドをoverrideして拡張クラスを作成するようにするというパターンを使ってください。