見出し画像

【Unity】データベースのすすめ

自販機でZONEを買って、そのまま置いてきてしまったテトラさんです。
シトロンワールドというゲームを作っていて、たまに開発記事を書いたりしています。フォローして未来を目撃しましょう。

前回、ScriptableObjectを紹介しました。今回はその続きになります。

データベースとは?

前回紹介したように、キャラクター、アイテムなど、それぞれ同じ種類のパラメータを持ってるものなどを一括で管理する際に便利な機能です。

実践

前回簡単なScriptableObjectを作成しました。今回はこれをListで管理できるように改造します。

前回作ったScriptableObject

これを…こう!

[System.Serializable]を忘れずに。

新しくTestDatasといったクラスを作成、TestDatasとします。その型でListを宣言します。
出来たらScriptableObjectを作成しましょう。

空のリストが出来ていると思うので、+を押して適当な値を入れます。

そして参照する適当なスクリプトを書き、適当なオブジェクトにアタッチします。

使い回し。

forで要素の数(testData.testDatas.Count)だけ繰り返し、オブジェクトの変数にデータベースから参照した値を代入し表示します。

また、要素での検索処理などを作る場合に使えるので、foreachもあわせて覚えておきましょう。

上のものと全く同じ処理になります。

実行結果

モーマンタイネ。

こういうことです。i番目のデータを参照します。メリットは前回と同じくアセットに保存できる点です。

この例じゃデータベース感がありませんが、自分の作品ではこんな感じで使っています。

[System.serealizable]を抜き、スクリプトを分けることでItemも個別にScriptableObjectに。
リストにはオブジェクトのみ格納(要素が多いので)。
各アイテムの要素
インベントリ。今後大量にアイテムを追加した際idでの参照は順番等の問題が絶対生まれるので、インベントリリストに渡すメソッドではScriptableObjectを渡しています。作者はB型です。

使い手やゲームによって様々な仕様が作れる思うので、試行錯誤して自己流の使い方を模索するのが最適解だと思います。
文字での説明が難儀でしたが、レパートリー概念のあるゲームを作る上でデータの管理というものは避けられないので、いろいろ試したりしてみててください。

参考になったり面白かったりしたらインプレッションを残していってくれると嬉しいです。
フォロー、スキ!のエネルギーがシトロンに変換され、テトラさんのエネルギーになります。ぜひお願いします。

それでは、良き創作ライフを!

いいなと思ったら応援しよう!