【问题标题】:Unexpected symbol `=' in class, struct, or interface member declaration类、结构或接口成员声明中的意外符号“=”
【发布时间】:2015-04-18 09:33:17
【问题描述】:

我收到以下代码的上述错误:

public class Sheep : Animal {
    //hpMax = 100;
    //power = 10;
    //defense = 10;
    //speed = 10;
    animalName = "Sheep Test";

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

}

看来我无法在方法之外分配变量。是这样吗?这意味着我必须创建一个“AssignStats()”方法来分配 HPMax、力量、防御、速度等。我想可能很清楚为什么我想避免在每次调用时将这个添加的步骤添加到代码中动物对象。

还是我遗漏了一些明显的东西?

【问题讨论】:

  • String animalName = "Sheep Test";。你总是需要为成员变量指定一个类型。
  • 是的,你遗漏了一些明显的东西。您正在声明成员 animalName 而不指定类型。
  • @Mephy 可笑。太感谢了。我认为因为它继承了 animalName 我不需要这样做。如此明显。很抱歉。

标签: c# unity3d


【解决方案1】:

您缺少animalName 属性的类型声明。

如果animalName 在基类中声明为受保护变量,您可以在构造函数中设置animalName,如下所示:

public Sheep() : base(){
   animalName = "Sheep Test";
}

这假定Animal 类的定义类似于:

public class Animal{
   protected string animalName;  //protected allows descendent classes 
                                 //direct access to the var.
}

【讨论】:

  • 谢谢!我猜想我会被否决,因为这个答案很简单,但我一直在努力解决这个问题。
  • 反对票似乎是惩罚性的,如果您正在学习,那么我认为这是一个完全合法的问题。
  • @T McKeown:实际上,导致我首先删除字符串标识符的问题又回来了。以下内容根本不打印任何内容。 debug.log 函数根本不显示任何内容。公共类绵羊:动物{字符串动物名称=“绵羊测试”;公共覆盖 void Attack() { Debug.Log(animalName); } }
猜你喜欢
  • 2014-05-29
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
相关资源
最近更新 更多