Unityで値を触りやすいデータを作ろう -導入編-

こんにちは。インターン生の東谷太喜です。

本日から簡単なゲームを作る際にちょっと便利なUnityのシステムを紹介していこうと思います。

今回はScriptableObjectについて紹介しようと思います。

ゲームがほぼ完成し、ステージセレクトでゲームの難易度を自由に変えたい。出現する敵の種類をステージ毎に変えたい。という経験ありませんか?

そんな時におススメするのがScriptableObjectです。

メリット:

同じ敵でもパラメーターが違う敵を作成できる。

変えたいパラメーターをInspector内で即座に変えられる。

そのためバランス調整が簡単になるため、レベルデザインしやすい。

デメリット:

ゲーム実行中のセーブデータとしては使えないという罠がある。

例.

このような形でまとめておけば、時間制限やBGMなどをステージ毎に簡単に変えられるようになります。

シーンに配置されたオブジェクトの値を1つ1つ別シーンに移動→値を変える作業をするよりは1つのフォルダ内に存在するファイルを変更を行う方が、非常に効率的です。

そして現状、このデータが何を指しているのかがわかりません。理解できているのは作成し、実装した本人だけです。

そこで活躍するのが、UnityのEditor拡張です。

先程のパラメーターは英語で変更をした際、何の値が変わるのかが不明瞭です。

そこでエディター拡張をしてみましょう。

分かりにくいデータを誰でもわかるように書き換えることができました。

レベルデザインを他のプランナーやデザイナーにしてもらう場合はエディター拡張と合わせて実装を行うと非常に喜ばれます。

また、むやみに変更してほしくない値を非表示にすることもできるので、編集するリスクを抑えることもできます。

様々な人が見て触るデータというのは、触りやすく編集しやすいものでなければなりません。

メリットについて話してきましたが、次はデメリットです。

デメリットとして、ゲーム中に読み込みはできても書き込みができません。

書き込む処理にはUnityEditorの参照が必要です。ゲームのビルド後はUnityEditorへの参照ができなくなります。

つまり、ビルド後の書き込み処理が出来ないためプレイデータのセーブなど、セーブデータとしてScriptableObjectを使用することはお勧めできません。

なので、デフォルトの値を渡すなどの用途で使うことをお勧めします。

今回の内容はいかがだったでしょうか。

今回はざっくりとした説明でした。次回からは今回貼られていた画像のように作成の仕方を書いていきたいと思います。

次回は、ScriptableObjectを作成の仕方についてです。

間違っている点や、気になった点などございましたら、コメントにて書いていただければ幸いです。

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー