0
我試圖讓我所有的能力都遵循來自超類的指令來減少重複代碼的數量。我試圖通過在構造函數中傳入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);
}
這裏是一個子類,它將完美工作。
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
沒問題,我很樂意幫助你 –