Adv Save Manager


投稿日:2014年6月13日 | 最終更新日:2024年6月26日

ゲームのセーブ・ロード処理をする。

名前 内容
File IO Manager ファイルの入出力際の管理オブジェクト
セーデータファイルの符号化に使用する
未設定の場合、シーン内から検索して設定する。
Type セーブタイプの設定
All Page : 全てのページでセーブ可能にします。ロード時は各ページの先頭から再開されます。デフォルトのセーブです。
SavePoint : シナリオラベルで指定してある部分のみセーブ可能です。ロード時は、直前のセーブポイントから再開します。
Disable : セーブを無効化します。
Is Auto Save オートセーブを有効にするか
Directory Name セーブデータディレクトリの名前
File Name セーブファイルの名前(実際のファイル名は連番で数字が追加される)
Default Setting/
WebPlayer Setting
セーブファイルの設定
DefaultとWebPlayerで分かれているのは、WebPlayerではセーブファイルの容量制限(1MB)があるため
Defaultのほうはファイルの最大数を増やしたり、キャプチャーサイズを大きくしても問題ない
Capture Width キャプチャーしたゲーム画面のサイズ(横)
Capture Height キャプチャーしたゲーム画面のサイズ(縦)
Save Max セーブファイルの最大数
Custom Save Data Objects セーブデータを独自拡張する時に設定する、カスタムセーブデータ用のオブジェクト
Restart Sub Thread セーブ時点で動いている演出用サブスレッドがあった場合、セーブデータロード後演出用サブスレッドを最初から起動する
ThumbnailType セーブデータのサムネイル画像の形式。Captureがデフォルトでセーブ時のゲーム画面のキャプチャ画像を使用する。
設定を変えることで直接画像を指定することも可能。詳細は下記参照。
Thumbnail Param Name サムネイル画像にファイル名を設定する場合のパラメーター名。詳細は下記参照。

宴のセーブについて

宴は基本的には、特に何も設定しなくても、自動的に全てのページでセーブできるようになっています。
通常は問題ないのですが、一度リリースしたゲームを修正・アップデートする際には注意が必要になります。
というのも、セーブの仕組みとしては「シナリオラベルからのページ数」で記録しているため、ページ数が増えたり減ったりする変更があると、再開するページがずれてしまためです。
また、「セーブ時に鳴っていたBGM」や「背景のテクスチャ」なども記録しているのですが、シナリオのアップデートや修正で、これらが消えてしまったりファイルパスが変わると、ロードエラーになってしまいます。

実は、この「どこでもセーブ可能」というヴィジュアルノベルの基本的な仕組自体が、「ゲームリリース後もアップデートされるのが普通」という最近のモバイルゲームの常識からすると時代遅れな気もしています。
なので、宴2.6.0から、どこでもセーブではなく、シナリオが一区切りした「セーブ可能なポイント」だけでセーブ・ロード可能なパターンを追加しました。

セーブポイント方式

セーブポイント方式を使うには
1.Adv Save Managerの「Type」を「SavePoint」に

2.セーブポイントを設定したいシナリオラベルのArg1に「SavePoint」と記述

3.Arg2は、セーブのタイトルになります。(未記入の場合はそのページのテキストが自動的に設定されます)

となります。これで、再開時にはセーブポイントの場所から再開されるようになります。
セーブポイントの直前で、背景やBGMなどを全てクリアして再開時に表示しなおすような形にすれば、互換性も保ちやすくなると思われます。

セーブデータのタイトルの制御

セーブデータのタイトルは、基本的には現在のページのシナリオテキスト本文が記録されます。
AdvPageコンポーネントの「Save Title Type」で、テキストタグの扱いをどうするかなどの設定が可能です。

セーブデータのタイトル表示をパラメーターから制御する

AdvPageコンポーネントの「SaveTitleType」に「Paramater」を設定し、「Save Title Param Name」にタイトル表示制御で使う任意のパラメーター名を設定してください。
サンプル画像では「save_title」です。

ss_1571

パラメーターシートに、「Save Title Param Name」で設定したパラメーター名で、String型のパラメーターを追加してください。

ss_1570

実際の表示内容は、シナリオの任意のタイミングで、Paramコマンドなどを使って「save_title」のパラメーターの内容を書き換えるようにしてください。
専用のマクロを作っておくと制御しやすいと思います。
パラメーターをプログラムから書き換えるようにすることも可能なので、プログラムから制御するほうが都合がよい場合はそうしてください。

セーブデータのタイトルをシナリオラベルごとに指定する

シナリオラベルのArg2にテキストを設定すると、そのシナリオラベル中の全てのページのセーブデータのタイトルが設定したテキストに固定されます。
ローカライズも可能です。詳細

セーブデータのサムイネイル制御

ThumbnailTypeを「Cpature」以外にすると、サムネイルをゲームのキャプチャー画像ではなく、指定した画像ファイルにすることができます。

ThumbnailTypeのリファレンスは以下の通りです。

名前 内容
Capture ゲーム画面のキャプチャー画像をセーブファイルに記録し、それをサムネイル画像とします。
基本動作になります。
Thumbnail File シナリオラベルのArg3でサムネイル画像のラベル名を設定する型式になります。
Arg3に記載のない場合は、直前のサムネイル画像を継承します。
Both キャプチャーとサムネイル画像ラベルを併用します。
シナリオラベルのArg3に記載のない場合は、キャプチャー画像を使用します。

サムイネイル画像を使用するためには、少し手順が多いのですが以下の通り設定を行ってください。

ThumbnailTypeとThumbnail Param Nameの設定

「ThumbnailType」を「Thumbnail File」か「Both」に設定してください。

「ThumbnailType」を変更すると、「Thumbnail Param Name」が表示されるので、サムネイル画像ラベル名を記録するためのパラメーター名を設定してください。
例)save_thumbnail

Paramシートにパラメーターの追加

Paramシートに、「Thumbnail Param Name」で指定した名前のString型のパラメーターを追加してください。

表示するサムネイル画像の定義シートの追加

まず、宴プロジェクト名/ ScriptableObject フォルダ以下に、
ProjeectWindow上の右クリックして、Create>Utage>CustomData>UiTexutreDataConainer をクリックして、UI画像定義用の拡張データコンテナを作成します。

作成したデータコンテナを、宴プロジェクト名/ScriptableObject/CustomProjectSettingアセットの、CustomDataSettingsのDataContainerCretorsに追加してください。

使用するサムネイルが画像の設定シートを作成します。
(サンプルファイルはUtage/Sample/Scenarios/SampleUiTexture.xlsにあります)
UiTextureというシート名(CSVならファイル名)を追加してください。
・識別用のLabel名
・表示画像FilePath (「宴プロジェクト名/Resources/宴プロジェクト名」以下からの相対パスになります)
それぞれの項目を設定してください。

セーブボタンのUIプレハブを編集

宴プロジェクト名/Prefabs/UI/SaveLoadItem.prefabのプレハブを選択し、編集画面を開く

SaveLoadItem/CapatureImageオブジェクトにAdvUguiLoadGraphicFileコンポーネントをAddComponentする。

SaveLoadItemオブジェクトにUtageUguiSaveLoadItemThumbnailコンポーネントをAddComponentし、
TextureにCaptureImageオブジェクト設定する

シナリオラベルのArg3に、1のUiTextureシートに設定したテクスチャのラベル名を設定

シナリオラベルのArg3にUiTextureシートに設定したテクスチャのラベル名を設定。

応用として、Parmコマンドで「Thumbnail Param Name」に設定したパラメーター名に、テクスチャラベル名を設定することでも、サムネイル画像を設定可能です。
シナリオラベルの単位ではなく、任意のタイミングで画像を変更したい場合などに利用してください。

以上の手順で、セーブの表示イメージが、キャプチャ画像ではなく、指定したラベル名に対応するテクスチャになります。