アイテムやスキルのIDと固有のクラスを結び付けたいZennかがみ🍜アイテムやスキルのIDと固有のクラスを結び付けたい2024/10/05に公開Unitytech記事の概要ゲームにおけるスキルやアイテムなど、「いろいろな種類が存在していて、かつそれぞれが固有の動きをする」ものを実装する時のアイデア。これが最適解とは全く思ってませんが、何かしらに使えるかもと思ってメモ。記事内ではUniRxを使用しています。エフェクトとして以下のアセットを使用しています。https://assetstore.unity.com/packages/vfx/particles/spells/ky-magic-effects-free-21927?locale=ja-JP&srsltid=AfmBOoqPOanxQbiCISxxnmUtoicipWKLReU58BbDnlCyBboG_3m1tT2L実装してみるもの今回はスキルを例に実装を行ってみる。これを実装するにあたって、下記のような設計で実装したい。各種スキルのパラメータはScripatableObjectで管理。スキルごとに固有のパラメータが存在することも考慮したい。スキルごとに固有の制御クラスが存在しており、エフェクトの再生やダメージ処理などを行う。スキルごとの制御クラスはMonoBehaviourにしたくない。SkillManagerに渡すのはIdだけにしたい。仮でボタンを押すとスキル発動という仕組みを作ってみる。ScripatableObject(ScripatableObjectの説明は割愛します。)スキルの情報やパラメータを管理するためのもの。各スキル固有のパラメータ(画像1)を、SkillParameterHolder.asset(画像2)へ格納する。基底クラスとし、それぞれ固有のクラスとなっている。通して制御クラス(ISkillController)を取得することができる。(ISkillControllerは後述。SkillParameter_Fire.cs。SkillParameter_Baseをリストとして持っているだけ。GetParametrメソッドを通して、目的のスキルのパラメータを取得する。}}制御クラスの実装スキルの挙動を実装するクラス。SkillControllerはコンストラクタを通してパラメータを保持できるようにしている。ジェネリッククラスにしている。