除非在访问它的方法中分配变量,否则不会分配变量

时间:2015-04-18 03:36:50

标签: c# unity3d

Sheep继承自Animal类。以下应该调用Sheep的Attack()方法,它是一个显示animalName变量的Debug.Log()。相反,Unity什么也没显示。

如果我将animalName的声明移动到Attack()方法中,它可以工作,但由于某种原因,如果它位于类本身而不是被调用的方法中,它就不会分配animalName。 / p>

public class Test : MonoBehaviour {

    public Animal Animal;

    void Update () {

        Animal.Attack();

    }
}

这是Animal对象无法正常工作。

public class Sheep : Animal {

    string animalName = "wot";

    public override void Attack()
    {
        Debug.Log(animalName);
    }
}

以下是羊继承的动物类:

public abstract class Animal : MonoBehaviour {

public int hpMax;
public int power;
public int defense;
public int speed;
public string animalName ;

    abstract public void Attack();
}

1 个答案:

答案 0 :(得分:1)

尝试更改Sheep课程,使其如下所示:

public class Sheep : Animal {

    public Sheep()
    {
        animalName = "wot";
    }

    public override void Attack()
    {
        Debug.Log(animalName);
    }
}