SaveData
・今更誰も教えてくれない、Unityにおけるアセット読み込みについての基礎知識(外部サイト)
ここには載せていないものもありますし、サイトや先生によって勧める保存方法は違うと思います。
とりあえずここではJSONでの保存もしくはAddressablesでの保存方法を勧めておきます。
(ランキング機能などPlayFab・IT志望ならFirebaseでの保存も試していいと思います。)
1.アセット管理
Addressables
大規模プロジェクトや動的アセット管理が必要な場合。
-
概要:
- 動的なアセット管理と最適 化が可能なUnityの新しいアセット管理システム。
-
処理:
- アセットをグループ化し、必要に応じて動的にロード・アンロードする。
-
利点:
- メモリ使用量を最適化できる。
- ロード時間を最小限に抑えられる。
- ビルドサイズが小さくなる。
-
注意点:
- 初期セットアップに手間がかかることがある。
- アセットの管理に細心の注意が必要。
AssetBundle
DLCや動的コンテンツ更新が必要な場合。
-
概要:
- 外部のアセットを事前にパッケージ化し、実行時にロード可能な仕組み。
-
処理:
- アセットバンドルをビルドしてダウンロードやロードを行う。
-
利点:
- DLCや動的コンテンツの提供が容易。
- ネットワーク越しにアセットをダウンロードできる。
-
注意点:
- ビルド時に手動でアセットバンドルを管理する必要がある。
- バージョン管理と更新処理が必要。
AssetDatabase
エディタスクリプトやツール開発の場合。
-
概要:
- Unityエディタ内でアセットの操作と管理を行うAPI。
-
処理:
- エディタスクリプトやツールの開発に使用される。
-
利点:
- エディタでのアセットの自動化された操作が可能。
- カスタムインスペクターやツールの作成に適している。
-
注意点:
- 実行時のビルドでは使用できない。
- エディタ依存性がある。
Resources
小規模プロジェクトやプロトタイプの場合。
-
概要 :
アプリケーションのビルド時にリソースとして組み込まれる特定のフォルダのこと。 -
処理:
アプリビルド時に、このフォルダ内のアセットは特別な変換処理を経て、アプリの実行可能ファイルに直接格納される。 -
利点:
簡単なアクセスと使用が可能。 -
注意点:
全てのアセットがビルドに含まれるため、メモリ管理が難しい。
StreamingAssets
外部から変更可能なアセットが必要な場合。
-
概要:
アプリケーションのビルド時にそのまま含まれる外部ファイルのフォルダ。 -
処理:
アプリビルド時に変更なしで含まれる。 -
利点:
- 外部からアクセス可能な変更可能なアセットに適している。
- ユーザーがカスタムデータや設定を追加できる。
-
注意点:
- アプリ内のパスでアクセスする必要がある。
2.データストレージ
PlayFab
- マルチプレイヤーやライブサービスのゲーム。
-
概要:
- クラウドベースのプレイヤーデータ管理サービス。
-
処理:
- プレイヤーデータの保存、リーダーボード、課金処理などが可能。
-
利点:
- グローバルでのプレイヤーデータの管理が可能。
- クラウド上でのセキュリティとスケーラビリティが提供される。
-
注意点:
- ネットワーク接続が必要。
- サービス利用料がかかる場合がある。
Firebase
- リアルタイムマルチプレイヤーやチャット機能。
-
概要:
- Googleが提供するモバイル・Webアプリ向けの開発プラットフォーム。
-
処理:
- リアルタイムデータベース、認証、クラウドメッセ ージングなどが提供される。
-
利点:
- リアルタイムでのデータの同期が可能。
- 多機能なサービスが提供される。
-
注意点:
- Googleアカウントが必要。
- プランによっては利用料が発生する。
PlayerPrefs (検索すると一番記事がたくさん出てくると思う)
設定や進行状況の簡単な保存。一番手っ取り早く保存ができ、ネット記事も多い。
-
概要:
- 簡単なキー/バリュー形式でのデータ保存。
-
処理:
- ローカルにデータを保存する。
-
利点:
- 簡単に設定や進行状況を保存できる。
- ゲームデータの一時的な保存に適している。
-
注意点:
- セキュリティが低く、データの改ざんが容易であること。(暗号化されない)
- データサイズに制限がある
- デフォルトではint,float,stringといった基本的な型しか保存できない(bool型やDictionary型の保存ができない)
- データの保存のされ方がわかりにくい
JSON
柔軟で構造化されたデータ保存が必要な場合。
-
概要:
- 柔軟で構造化されたデータをテキスト形式で保存するフォーマット。
-
処理:
- テキストファイルとして保存・読み込みする。
-
利点:
- 読み書きが容易で、他のプログラムとのデータ共有が可能。
- 構造化されたデータ管理ができる。データがわかりやすい。(暗号化もできる)
-
注意点:
- 大容量のデータには適していない場合がある。
- パースやシリアライズにコストがかかることがある。
QuickSave
高機能なデータ保存が必要な場合。
- 概要:
- 高機能なデータ保存ライブラリ。
- 処理:
- 複雑なデータ保存と復元をサポート。
- 利点:
- 複雑なセーブ/ロード機能を提供。
- セーブデータの管理とバックアップが容易。
- 注意点:
- アセットストアからの購入が必要(無料)。
- ライブラリの学習コストがかかる場合がある。