Я стараюсь, чтобы все мои способности соответствовали инструкциям суперкласса, чтобы уменьшить количество повторяющихся кодов. Я попытался сделать это, передав в Monobehavior в качестве параметра в конструкторе. Это будет работать отлично, но я получаю предупреждение о том, что я просто не могу этого сделать. Вот мой суперкласс.Inheritance in Unity issue
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. Я не могу расширять несколько классов, и мне нужно, чтобы он расширил MonoBehavior. Спасибо за любую помощь!
Это прекрасное спасибо Я чувствую себя немой теперь – Luke
без проблем, я рад помочь вам –