質問: ### 前提・実現したいこと 独学でUnityにてアクションゲームを制作していますが(独学とはいえ書籍やterateil様にお世話になっております)、ゲーム内でのデータ、あるいはアセットの扱い方がわかりません。 Addressable Asset Systemについて勉強していましたところ、メモリ管理やビルド、データベースなどの理解してなかった概念が押し寄せてきたので、それらをなぁなぁで済ませず正確に理解したいです。 正直なところ自分でもあまりわかっていないところが分かっておらず、誤解を生んだり正しく伝わらなかったりしそうな言い方になってしまったことをお詫びいたします。 しかしおそらくはこのままだとセーブすらままなりません。 ここを超えられるかどうかがゲーム制作者になれるかどうかの一つの分岐点だと感じています。 なんとかして正しい知識を身に着けたいです。 ### 試したこと Qittaの記事を見たり所持しているUnityの参考書を見直したりしましたがデータ関連の情報については一切見当たりません。 簡単に学べることではないでしょうし、この場で説明しろなどとはとても言えませんがなにか学習のとっかかりが欲しいです。 できればUnityやC#に関連したものだとうれしいですが、それに限らず書籍や有料のネット講座など値段や媒体は気にせず教えてくださるとうれしいです。 しかし、プログラミングスクールは何十万もお金を用意できないので遠慮させていただきます。 申し訳ありません。 ### 補足情報 Unityと絵を同時に始めて11か月、フラグ管理を駆使したスタミナゲージやアクションのコードを良し悪しはさておき書ける程度のスキルです。 データという内部は触らず、ひたすら攻撃の当たり判定が当たると敵や自分が消える、アイテムを取るとスコア画面に数字が加算される、とかそういうレベルの表面的なゲーム、ミニゲーム的なものしか作ってきませんでした。 しかし今回ストーリーつきの2Dアクションゲームに着手するにあたって、セーブデータやデータ管理の必要に迫られた次第です。 未熟者ですが、なんとか頑張ってゲーム制作を果たしたいと思っています。 どうかよろしくお願いいたします。
回答: 公式リファレンスとQiitaと有志のブログだけでも個人制作レベルであれば何とかなると思います。 (私自身が何とかしてきたので他がオススメ出来ないというのもありますが) まずは物事を正しく理解すべきかと思います。 例えばAddressable Asset Systemは「アセットをロードする仕組み」であり、(ゲームの)ビルドやデータベースとは本質的な関わりはありません(メモリ管理は関連しているかもですが)。ましてやセーブとは関わりがありません。 ゲームデータならばScriptableObjectやSqliteやオンラインのデータベース、 セーブならPlayerPrefsやFile.IOや暗号化など、 まず個々の機能の実装方法を把握した上で、どう繋げればいいかを考えた方がいいかと思います。 (両者が理解出来れば「データはこういう形式にした方がセーブしやすい」などの設計が出来るようになります) ある程度作れる方なら「実装したい機能を単純化→調べる→組み合わせる」という手順をやって来たかと思います。 それを今後も続ければいいだけです。 但し、独自ググりだけだとなかなか出て来ない重要ワードとして 「コンポーネント志向」「クラスの継承」「linq」「MVCパターン」辺りは知っておくといいかと思います(使うかは別として)。