1

好的,所以我正在使用 XNA 制作游戏,我希望所有敌人都从一个名为“baseEnemy.cs”的基类扩展。例如,我想要一个僵尸有一个名为“zombie.cs”的类,但让它以“baseEnemy.cs”为结尾。

我想我记得有人告诉我它的布局如下:

class zombie : baseEnemy
{

}

但我假设使用 get{} 和 set{} 将帮助我更改作为 baseEnemy.cs 的一部分存在的zombies.cs 中当前变量的值......如果这有意义吗?我不了解 get{} 和 set{} 的用法,但我在其他语言中看到过它(例如 minecraft 的代码),我认为它们的工作方式相似。

所以,假设我对敌人的速度有一个浮动......我不希望所有的敌人都以相同的速度移动(僵尸应该有低速等)。我如何从 baseEnemy.cs 中获取速度并将其设置为zombie.cs 中的速度。

还是在baseEnemy.cs中公开变量会更好吗?

抱歉,如果上述内容没有多大意义,我对 XNA 或使用的术语不太熟悉,因此我可能听起来像是在绕圈子:S

4

1 回答 1

2

您正在寻找所谓的抽象方法抽象属性

abstract class Enemy
{
    public abstract float GetSpeed();
}

class Zombie : Enemy
{
    public override float GetSpeed()
    {
        return 10;
    }
}

注意abstract类名和方法名前面的关键字。子类必须实现所有抽象成员,如果它本身不是抽象的。实现抽象成员时,override必须使用关键字。

get set您描述的语法称为property。它是一种特殊的 C# 构造,用于组织字段的 getter 和/或 setter,并将它们放在一个块中。与上面使用属性的示例相同:

abstract class Enemy
{
    public abstract float Speed { get; }
}

class Zombie : Enemy
{
    public override float Speed
    {
        get { return 10; }
    }
}
于 2013-03-06T14:01:06.920 回答