【Unity】インターフェイスの簡単実装
スポンサーリンク
最近Qiitaでねこますさんが書いていたインターフェイスの記事が面白かったので便乗してみます。
interface (インターフェイス)は直訳すると介入するという意味になります。
今回は良く使う「ダメージを与える」というインターフェイスを作成します。
このインターフェイスを使用する時、使用者は必ず「AddlyDamage」関数を使用しなくてはなりません。
今回は「プレイヤーの攻撃がエネミーに当たったらダメージを与える」処理を参考にダメージ判定インターフェイスを活用しましょう。
実際の流れ
用意する物 : Enemy (ダメージ受ける側)
中身はこんな感じ
上記に作成したIDamageApplicableインターフェースを継承しています。
関数はこの様な形。
Damageを受けたらOnNextを流します。
衝突したら
こちらはプレイヤーの攻撃オブジェクトの関数です。
コライダーで衝突判定を行なっております。
「もし衝突したオブジェクトにIDamegeApplicableがアタッチされていたら」
今回の場合、対象がエネミーであるかも調べます。
そして、エネミーの場合は、アタッチされてあるIDamegeApplicableを活用し、ダメージ判定処理を実行します。
あとがき
今回の場合、プレイヤー、エネミーは「ダメージ処理」を専門に扱う外部処理を実行しました。
そのため、もしダメージを受けないエネミーを作る場合、エネミー内部の処理を変更するのではなく、ダメージインターフェイスを使用しない様にすれば、無駄な工数を削減でき、保守性も高まります。
この様に、普遍的で多数の箇所で実行されるロジックをインターフェイス化することは非常に重要です。
また、業務などのチーム制作の場合、チーム全体の品質、コーディング管理としても活用できます。
今回のダメージ判定以外にも、例えばアイテムの購入処理や、UIの生成処理など多数の分野で活用できます。
使いすぎは問題ですが、オブジェクト思考を考える上で必須の知識のため、ぜひ活用してください!。