メインコンテンツまでスキップ

SaveData

今更誰も教えてくれない、Unityにおけるアセット読み込みについての基礎知識(外部サイト)

AssetBundleを完全に理解する(外部サイト)

ここには載せていないものもありますし、サイトや先生によって勧める保存方法は違うと思います。
とりあえずここでは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

高機能なデータ保存が必要な場合。

  • 概要:
    • 高機能なデータ保存ライブラリ。
  • 処理:
    • 複雑なデータ保存と復元をサポート。
  • 利点:
    • 複雑なセーブ/ロード機能を提供。
    • セーブデータの管理とバックアップが容易。
  • 注意点:
    • アセットストアからの購入が必要(無料)。
    • ライブラリの学習コストがかかる場合がある。
(外部サイト)無料アセット「QuickSave」を使ったセーブ機能の作り方