はじめに
今回はMonoBehaviour の理解を深めるのが主な目的です
なので継承についての細かい説明は省きます
MonoBehaviour と継承についてざっくり概要を知りたい人向けの記事になってます
継承の概要
オブジェクト指向には三大要素「カプセル化」、「継承」、「ポリモーフィズム」というものがあります
継承はそのうちの1つです、三大要素っていうくらいなのでよく使われてるし使います
継承とは
あるクラスから機能を 継承 して新しいクラスをつくることです
親クラスと子クラス
継承するときに継承元となるクラスを親クラス(基底クラス)といい、継承されるクラスを子クラス(派生クラス)といいます
親クラスを継承したのが子クラスです
この記事では親クラスでやっていきます!
継承のイメージ
矢印の向いてる方が、親クラス ( スライム ) です
親クラスは子クラスよりも抽象度が高いです
継承のメリット
子クラスは親クラス の機能をすべて継承しているので共通の処理を書かなくて済みます!
なのでコードの量が減り、機能を追加したときの手間が減るので管理がしやすくなります
エンジニアの大好きな再利用性が向上します
MonoBehaviour
ここからが本題です
Unityで新しくクラスを作ると絶対に MonoBehaviour がついてくるので結構馴染み深いですよね
馴染み深いわりには MonoBehaviour が一体何者なのかよく知らないけど使ってる人も多いと思います
MonoBehaviourの機能
MonoBehaviourの機能を大きく分けると以下の2つになると思います
イベント関数
Start、Update、FixedUpdate などの特定のタイミングで処理される関数
GameObject
transform、tag、GetComponent などのゲームオブジェクトに関するクラス
GameObject 公式ドキュメント
MonoBehavior 公式ドキュメント
MonoBehaviour とは
ざっくりいうと Unity が提供してくれた Unity で開発するときに必要な機能の盛り合わせクラスです
MonoBehaviour を使わない(継承しない)パターン
上記の通り MonoBehaviour はゲーム開発をする上でほぼ必須級の機能が備わっています、ですが継承しなくてもいいパターンもあります
MonoBehaviourを継承しない = MonoBehaviourの機能を使わない
つまりイベント関数もGameObject関連の機能も使わない(Hierarchyに実体がない)場合です!
具体的にはキャラクターのステータスなどのデータ系です
データ系なら実体が必要ないのでMonoBehaviourを使わなくてもいいしイベント関数も必要ないですよね!
なんでMonoBehaviourアンチがいるのか
前述の通り MonoBehaviour にはたくさんの機能が入っています
クラスに必要以上の機能が入っていると、その機能が使われている可能性を考えないといけなくなります
なので大規模開発やチーム開発をする場合に大きな被害となってしまいます
さいごに
・Unity開発をしていて設計の勉強をはじめた一番最初にぶち当たる壁が MonoBehaviour だったのでまとめてみました
・思ったよりざっくりになってしまいましたが、この記事で MonoBehaviour の概要はわかるようになると思います
・まだ初心者なので勘違いやミスがあると思います、もしあったら教えてもらえると嬉しいです
以上です、お読みいただきありがとうございました。