ゲーム実行時に基本的に変更のないマスタデータに関して。それをUnityで扱うのにはいろいろな手段があるかと思います。

その中で Unityでよく使われる方法として ScriptableObject があります。

今回は、そもそも ScriptableObjectとは何かと、その使用法を解説します。
Unity Basic_172

【ScriptableObjectとは】

ScriptableObjectとは、基本的に変化のないマスタデータを、メモリ確保を伴う実体化を行わないで保有するための Unityでの手法と言えます。

最もよく使われる使用例はPrefabでの使用です。
例えばゲーム内で無数に出現する敵モンスターのゲームオブジェクト。
Unity Basic_173
 
通常、Unityではこれらのオブジェクトを Prefab化して、その Prefabをシーン上に大量に実体化して使用します。
そして、Prefabを実体化するたびに、データ値のメモリが確保されます。数が多ければ、その分だけメモリが使用されます。

そのデータ内に、どの Prefabでも使用して、ゲーム中に変化をしないマスタデータのようなものがある場合。それを Prefabにより大量生産される部分からマスタファイルとして切り分けておきたいものです。

Unity Basic_174

それを Unityで実現するのが、Scriptable Objectとなります。
Unityではこのマスタファイルをアセットとして作成することができます。



【メリット】

・メモリが節約できる

大量の Prefabの実体化を行った場合にも、この ScriptableObjectデータは含まれず、マスタファイルとして存在する ScriptableObjectアセットを参照する形をとります。
よって、Prefabから大量に生成されたオブジェクトのメモリ使用量を節約することができるのです。

・Inspectorビューからパラメータ設定ができる

データの変更はそれぞれの Prefabで行う必要はなく、マスタファイルである ScriptableObjectを変更すれば良くなります。
シーン上でなく Projectビューアセット内にある ScriptableObjectのアセットファイルを、Inspectorビュー上から値変更ができます。
Unity上ではとても値の調整がしやすいです。

・パラメータ設定をファイルとして管理できる

ScriptableObjectはアセット(ファイル)なので、コピーや差し替えが簡単にできます。
いくつかのバージョンや設定値が用意されたとして、その ScriptableObjectアセットを使用しているスクリプトの割当てファイルを差し替えれば良いだけです。



【ScriptableObjectの使用法】

使用する際の流れは以下のようになります。

① ScriptableObjectクラスを継承したクラスを作成

② Unityエディタ上からScriptableObjectアセットを作成

③ InspectorビューからScriptableObjectアセットのデータ設定

④ ScriptableObjectを使用する側のスクリプトを作成



次回、この上記の使用法の流れに沿って、実際にScriptableObjectを作成してみます。



Sponsored Link