私はスーパークラスの指示に従って、繰り返しコードの量を減らすことができます。私はMonobehaviorをコンストラクタのパラメータとして渡すことでこれを試みました。これは、私が単にこれをすることができないという警告を得ることを除いて、完全に機能します。私のスーパークラスです。Unity問題の継承
public class Ability : MonoBehaviour {
private SpriteRenderer renderer;
private MonoBehaviour ability;
public Ability(MonoBehaviour b) {
ability = b;
renderer = ability.GetComponent<SpriteRenderer>();
}
public void Start() {
}
void Update() {
}
public void checkAvailability()
{
if (ability.GetComponentInParent<SpeedBall>().getAvail())
{
renderer.enabled = true;
}
else
renderer.enabled = false;
}
public void updateRenderer()
{
renderer.enabled = true;
renderer.transform.position = ability.GetComponentInParent<BoxCollider>().transform.position;
renderer.transform.localScale = new Vector3(.2f, .2f, 0);
}
ここでは完全に動作する子クラスの1つです。
public class Sprite : MonoBehaviour {
private Ability ability;
void Start() {
ability = new Ability(this);
}
// Update is called once per frame
void Update() {
ability.updateRenderer();
ability.checkAvailability();
}
}
これは非伝統的であるが、それは動作するはずです。モノワーハイバーを渡さずにこの同じことを達成するためにとにかくありますか?私は複数のクラスを拡張することはできませんし、MonoBehaviorを拡張する必要があります。助けてくれてありがとう!
これは完璧です、今私は気がなくなりました。 – Luke
問題はありません。 –