はじめに
この記事はHamster Output Advent Calendar 2024の7日目の記事です!
最近、Vcontainerオンパレードの記事でしたが今回はRequireComponentの紹介です。
短くなっちゃうかも...
最近の悩み
チームでゲーム制作をしていると他の人が作ったスクリプトを稀に自分でアタッチすることもあります。この時にどのスクリプトが必要なのか悩んだことはありませんか。
クラスを見れば直ぐに解決するのは事実...
その他にも単純にアタッチを忘れるとか...スクリプトが多すぎてアタッチするのが分からなくなるなどなど...。これらの悩みを解決してくれるのが、RequireComponentという機能です。
RequireComponentって何ができるの?
MonoBehaviorがオブジェクトに、アタッチされた時に指定したコンポーネントを自動でアタッチしてくれる機能です。
また、指定したコンポーネントはRequireComponentを宣言したスクリプトが削除されない限り、コンポーネントを削除することができません。
実装方法
クラスの上にこのように追加するだけです。とても簡単!今回はRigidbodyを指定していますが、ここは自動アタッチされたいコンポーネントを指定しましょう。
[RequireComponent(typeof(Rigidbody))]
sealed internal class Test : MonoBehaviour
複数指定することも出来ます。
[RequireComponent(typeof(CapsuleCollider))]
[RequireComponent(typeof(Rigidbody))]
sealed internal class Test : MonoBehaviour
インスペクターにスクリプトをアタッチした瞬間に指定されたコンポーネントが追加されます。
記事の本編の内容はこれで終わりです!え...本当に短く終わっちゃった。(それはそう)
雑メモ
ここから下は頭が溶け始めているので文章が滅茶苦茶になっています。本編の内容ではないので無視しちゃってください。
頭が溶けているのは、夜にフィットネスバイクを漕ぎながらAKIRAの動画を視聴して体力が壊滅的に持っていかれたからです。
・この記事ができた本当の理由
最近作っているゲームで、MVPパターンのクラス設計をベースにしたらクラスの数がありえんくらい増えて、アタッチ忘れが増えた。
・Arbor3のParameterContainerの値更新が上手く行かない
ArborEditorのParameterContainerならSet○○で値を変えれるのに、GameObjectにアタッチしたParameterContainerは同じ方法でも値が変わらない。なぜ...?
・Arbor3情報少ないよ~~~~
リファレンスを見ても時々分からない内容が多い+インスペクタの設定項目が多すぎて分からない物が多い。調べ方が悪い可能性もある。
・パソコンのファンの音がやばい
ブォォーン見たいな音だけならまだしも、若干パーツが空回り?している異音がする。頼む、卒業するまで持ちこたえて!
・おわり
アウトプット速度が追い付かなくなってきてる。本当にまずい。