実現したいこと
Unityにて2Dゲームを作っています。
変数が異なるが同じ処理をするコードが多数あるので、何らかの方法を使って最適化したいと考えています。
C#
1void OnTriggerEnter2D(Collider2D collision) 2{ 3 if(collision.CompareTag("target")) 4 { 5 isContact = true; 6 } 7} 8 9void OnTriggerExit2D(Collider2D collision) 10{ 11 if(collision.CompareTag("target")) 12 { 13 isContact = false; 14 } 15}
このコードと同じ処理で変数(このコードでのtarget(string)とisContact(bool))だけが異なるコードがいくつもあります。該当するスクリプトでは変数のみを指定して、メソッドのコードは別のスクリプトに書いて省略したいと考えています。
試したこと
そこで継承を使った方法を思いつきました。
↓継承元
C#
1public class CollisionDitection : MonoBehaviour 2{ 3 protected string targetTag; 4 protected bool targetBool; 5 6 void OnTriggerEnter2D(Collider2D collision) 7 { 8 if (collision.CompareTag(targetTag)) 9 { 10 targetBool = true; 11 } 12 } 13 14 void OnTriggerExit2D(Collider2D collision) 15 { 16 if (collision.CompareTag(targetTag)) 17 { 18 targetBool = false; 19 } 20 } 21}
↓継承先
C#
1public class Example : CollisionDitection 2{ 3 void Start() 4 { 5 targetTag = "examTarget"; 6 targetBool = examBool; 7 } 8}
これだとエラーは発生はしませんが、継承元のメソッドは呼び出されませんでした。
また、そもそも継承をこういった形で使用するのは適切でないように感じています。
答えていただきたいこと
わがままですが、こういった状況での適切な最適化方法を教えていただきたいです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。