現在、たくさんの種類の敵キャラを作ることを計画しています。
そして、それぞれの敵キャラには「敵キャラすべてにつけるスクリプト」(以下基礎スクリプト)と「そのキャラ専用のスクリプト」(以下独自スクリプト)の2つを作成しています。
基礎スクリプトとは、体力や攻撃力などの一般的なプロパティや、被ダメージや死亡取得など一般的なメソッドを含めたもので、
独自スクリプトは、例えば歩行キャラや飛行キャラなどキャラ独自の移動方法をさせたりするために作っています。
ここで問題があります。
独自スクリプトから基礎スクリプトを参照するのは、ゲームオブジェクトを介して取得することはできるのですが、
基礎スクリプトから独自スクリプトを取得することができません。
理想としては例えば、SerializeField
などを使いインスペクター内で*独自スクリプトをアタッチさせておき、
独自スクリプトに含まれている「被弾時の特別な処理(レイジやカウンターなど独自なメソッド)」を基礎スクリプト**の「被弾処理」で呼び出せたらと思っています。
C#
1public class 基礎 : MonoBehaviour 2{ 3 void Damaged() 4 { 5 //被弾処理 6 (クラス).Damaged(); 7 } 8}
C#
1//敵キャラ 1 種類目の独自スクリプト 2public class 独自1 : MonoBehaviour 3{ 4 基礎 kiso; //基礎は同じゲームオブジェクトに確実にあるので参照可能 5 6 public void Damaged() 7 { 8 //基礎スクリプトの処理に加え、特殊な処理をここで 9 } 10}
上のようにキャラの種類ごとに違う処理(途中までは同じ)を実行させるにはどうすればいいのでしょうか。
イメージとして書いてみました(へたくそですみません)。
「すべての処理を基礎スクリプトに書いてしまって、独自スクリプトを消す」というのもやり方の一つだとは思うのですが、できれば基礎スクリプトは複雑にしたくありませんし、
逆に「キャラそれぞれにすべてのコードを書けばいい」とも思ったのですが、やはり敵キャラごとに体力や攻撃など概念が同じなので、それはひとくくりにしてしまった方が後々コンパクトにできるかなと思っています。
不明なクラスにある同一名のメソッドを実行するにはどうすればいいのか教えていただけたら嬉しいです。
どなたかお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。