Scenario Data Builder


「宴」のプロジェクト設定ファイル(.project)を編集するためのツールです。
主にExcelファイルやリソースのインポート設定のために必要となります。
インポートとは、Excelファイルやpngファイルなどを、Unityや宴が読み込める形に変換する処理のことで、このツールで変換処理のための設定を細かく調整することが可能です。
基本的には、今開いているシーンのプロジェクトが自動設定されていますが、作成済みのプロジェクト設定ファイル(.project)を設定することも可能です。


名前 内容
Project 現在設定しているシナリオプロジェクト
AutoImportType 自動インポートのタイプ
Always:常に
On Utage Scene:宴のあるシーンでのみ
None:自動インポートしない
Chapters ビルド対象のエクセルファイル
複数の章ごとに分けて管理でき、各章にも複数のエクセルファイルを設定可能
ここに設定されているエクセルが更新されると、自動でシナリオアセットがインポートされる
ChapterName:章の名前
ExcelList:その章で使うシナリオのリスト
ExcelDir:その章で使うシナリオのフォルダ(ここ以下にあるエクセルすべてをシナリオとして読みこむ)
「エクセルファイルを複数使ったり、章ごとに分けてシナリオファイルを管理する」も参照してください
Check Wait Type ウェイトタイプが適切に設定されているかチェックする。(宴2を引き継いだままの古い形式ではオフにするとチェックしない)
Check White Space エクセルデータの末端などに空白が混じっていないかをチェックする
Check Text Count 文字数をカウントしてチェックする。同時にメッセージウィンドウ内に収まるかどうかもチェックする。
大量にテキストがあると処理負荷が高いので、その場合はチェックを外すと軽くなる
Check Text Count All Language テキストカウントのチェックを、すべての言語に対しても行う。
Quick Auto Import 自動インポートを高速化する。詳細は下記
Parse Fomula エクセルの関数などを反映したテキストを使う。詳細は下記
Parse Numreic エクセルの関数などを反映したテキストを使う。詳細は下記
Comment Out On Import インポートの時点で、コメントアウトされたデータを削除する詳細は下記
Import 設定されたエクセルファイルをインポートする

「FilePath Check On Import」インポート時に、エクセル上で設定した画像や音声のファイルが実際に存在するかチェックする設定。詳細は後述

名前 内容
Resource Dir 素材のルートディレクトリの設定。
初期状態であれば、「プロジェクト名/Resources/プロジェクト名」となっているフォルダを設定。
フォルダが設定されていない場合は、ファイルパスのチェックがされない
Check Ext 拡張子の一致をチェックするか。
UnityのResources読み込みは拡張子まではチェックしないため、基本的には拡張子は不一致でも問題ない。
AddressabelAssetBundleを使っているなど、拡張子まで正確チェックしたい場合はここをオンにする

リソースのインポーターの自動設定。

名前 内容
Custom Import Folders ここに設定されたフォルダ以下のテクスチャやサウンドは、インポート設定が自動的に設定されます。
インポート設定を手動で行う場合はここからフォルダを外してください



Convert Settingは、古いタイプのサーバーからのダウンロードファイルのための設定です。基本的には使用しないでください

名前 内容
Convert Setting コンバート用の設定。シナリオをDLコンテンツとする場合には、エクセルファイルからTSVにコンバートする必要があるので、そのための設定
Output Directory コンバートしたTSVファイルの出力先フォルダ。Unityプロジェクト内である必要はないので、MyDocument以下などでも構わない
Version シナリオファイルの管理バージョン。DLコンテンツはキャッシュファイル機能を使うのでシナリオファイルを更新をするときはバージョン番号を上げること
Auto Update Version Convert時に、前回よりも+1したバージョン番号に自動更新する
Auto Convert On Import インポート時(エクセルファイル更新時)に、自動的にコンバートもする
Convert エクセルファイルをTSVにコンバートする

Quick Auto Import

エクセルを上書き、更新すると自動的にUnity上でインポート処理が走ります。
ただ、この場合に「設定したすべてのエクセルを開いてインポートする」という処理が走るため、シナリオが多いとその処理にけっこう時間がかかってしまいます。
原因としては、(宴のシナリオを解析する部分ではなく)エクセルファイルを開くこと自体に時間がかかってしまうためです。
どうもxlsxファイルだとより重いようで、場合によっては1ファイル開くのに2~3秒。結果として10個もファイルがあれば2~30秒かかってしまうようです。
それと、メモリ負荷も相当かかっているようです。(低スペック機だとフリーズしかねない)

対策として、
・Qucik Auto Import [Warning]
という機能を追加しました。

これは、エクセルファイルを上書きしたとき、自動でされるインポート処理を簡易的に行って高速化するためのものです。
クイック処理が有効だと、「書き換えたエクセルファイルのみの更新をインポート」します。
つまり、更新していないエクセルファイルは開かないので、処理が早くなります。

マクロシートを使う場合

マクロシートを書き換えた場合は、他のエクセルファイルにそのマクロの変更は適用されくなってしまうので注意してください。
たとえば、エクセルファイルAに書いているマクロを書き換えた場合、
エクセルファイルBでそのマクロを使っていたとしても、変更が適用されなくなってしまいます。
(エラーや警告も出せません)

そういう場合は、ScenarioDataBuilderでImportボタンを押すと、全エクセルファイルを今まで通りインポートしますので、
マクロシートを書き換えた場合はこちらからインポートしてください。
またはチェックをオフにしたままであれば、今まで通り使えます。

想定する使い方

・マクロシートは、一つのエクセルファイル(管理マスター的なエクセルファイル)にまとめて管理
・通常のシナリオファイルの更新→自動インポート
・マクロの更新したとき→ScenarioDataBuilderでImportボタンを押す
・チーム作業での共有コミットや、リリースなどいったんちゃんとした更新をかけるとき→→ScenarioDataBuilderでImportボタンを押す
という使い方を想定しています。
基本的には「頻繁に更新→テストを繰り返すときに重い」ときだけ「Qucik Auto Import」をオンにしてください。
ただ、あくまでテストのための高速化なので、うっかりミスでマクロの更新が適用されないままになってしまうケースもあると思いますので、
安全性を優先するのであれば、オフのまま使ってください。

Parse Fomula

エクセルの関数などを反映したテキストを使うためのものです。
エクセル関数を使いたい場合のものなので、基本的にはオフのままで使ってください。
詳しくはこちらに

ただ、ファイル形式がxlsかxlsxかや、WindowsかMacかで挙動が変わるなど、不安定なようです。
(これはNPOIというエクセル解析用のライブラリの動作なので、宴側では修正困難です)
TEXT(1 + 1、 “#”) のように、TEXT()関数で囲むと安定するようですので、試してみてください。

Parse Numreic

エクセルの記入の際に、桁区切り機能など数字に特有な記述をしている場合はこれを使ってください。
ただし、(あまりない例だと思いますが)逆に「桁区切りの数字を記述した文字列」つまり「1,000」という文字列は「1000」という文字列として認識してしまう恐れがあるので注意してください。

Comment Out On Import

インポートする時点で、エクセル内のデータでコメントアウトされているデータを全て削除して空欄にします。
デフォルトではOnですが、デバッグ情報の出力などをわかりやすくするために、コメントを残したい場合はオフにして、リリース時にはオンにしたものをインポートするなどして運用してください。

FilePath Check On Import

宴ではエクセル上で指定したファイルが存在しなかった場合、実際のゲーム中にエラーになります。
デフォルト設定ではシステムダイアログでエラーメッセージが表示されます。会話シーンなどでシステムダイアログがなかったとしても、Consoleにエラーメッセージが出ます。
ただ、ゲーム実行して実際にファイルをロードする箇所にならないとエラーがでないというのはエラーチェックがしづらいため、シナリオのインポート時にチェックができるようにしました。
「Resource Dir」に、素材のルートディレクトリとなるフォルダを設定することで、チェック機能が有効になります。

ファイルパスにエラーがある場合は、インポート後にコンソールにエラーがでます。

注意点

ファイルパスのチェックは、エンティテイ機能を使って動的に変更される素材にはうまく機能しない可能性があります。
また、ファイルロード機能をカスタムしている場合もうまく機能しない可能性があります。
StaticAssetManagerに設定したアセットは考慮しますが、それ以外はあくまで設定したルートディレクトリ以下にファイルが存在するかだけしかチェックしません。
チェック対象のルートディレクトリはResources以下以外においても大丈夫ですので、アセットバンドルやAddressabelAssetBundleを使う場合であっても、元となる素材のルートディレクトリさえ設定すればチェックが可能かと思います。
それ以上の細かい設定が必要な場合は、Q&Aなどに要望をお願いします。