0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MonoBehaviourとScriptableObjectを比較してみよう

0
Posted at

はじめに

現在、大学の課題で某どうぶつゲームから着想を得た2DパズルゲームをUnityで制作している。本作は鳥をできるだけ多く積み上げ、高いスコアを目指すというゲームだ。今回は本作の制作でも使った基底クラス、MonoBehaviourとScriptableObjectについて、比較したいと思う。

基底クラスとは

基底クラスとは、他のクラスに機能や性質を受け継がせるための「親クラス」のこと。他のクラス(派生クラス)に共通の処理や変数をまとめて定義でき、派生クラスは基底クラスの機能をそのまま使ったり、拡張したりできる。

MonoBehaviourとは

MonoBehaviour(モノビヘイビア) は、Unityのゲームオブジェクトにアタッチして使う、基本的なスクリプトの基底クラスのこと。Unityのゲームオブジェクトに動作や挙動を与えるためのスクリプトを作るときは、このクラスを継承する。継承するとStart()やUpdate()などのUnityのイベント関数を使える。チャッピー曰く、MonoBehaviourは「ゲームオブジェクトに命を吹き込むための土台」だそう。

MonoBehaviourの特徴

特徴 説明
ゲームオブジェクト依存 スクリプトはゲームオブジェクトにアタッチして初めて機能する
Unityイベントの利用 Start(), Update() などが使える
シーン内で有効 シーン内のゲームオブジェクトに紐付く
コンポーネント管理 他のコンポーネント(Rigidbody, Colliderなど)を簡単に取得可能

ScriptableObjectとは

ScriptableObject(スクリプタブルオブジェクト)は、Unityで使われるデータ保持用の基底クラスのこと。ゲームオブジェクトに依存せず独立したデータとしてアセット化でき、データをシーン間で共有したり、複数オブジェクトで再利用したりできる。ゲームオブジェクトにアタッチして動作するものではないため、継承してもStart()やUpdate()などのUnityのイベント関数は基本的に使えない。チャッピー曰く、「ゲームの設定や情報を保存・共有するためのデータコンテナ」だそう。

ScriptableObjectの特徴

特徴 説明
シーン非依存 ゲームオブジェクトにアタッチしなくてもアセットとして存在できる
再利用可能 複数のオブジェクトで同じデータを参照可能
軽量 MonoBehaviourよりメモリ消費が少ない
Inspectorで編集可能 [SerializeField] を使って値を設定できる

両者を比較してみよう

比較項目 MonoBehaviour ScriptableObject
依存対象 ゲームオブジェクト シーンやオブジェクトに依存しない
イベント関数 Start(), Update() など使用可能 基本的に使用不可
用途 挙動・処理 データ保持・設定
作成方法 ゲームオブジェクトにアタッチ アセットとして作成、再利用可能

まとめ

MonoBehaviourとScriptableObjectには、それぞれ違った良さがある。Unityでゲーム制作をするなら、それぞれの特徴を覚えておこう!メリークリスマス!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?