繁体   English   中英

'class、结构或接口成员声明中的无效标记'='。' 统一脚本中有两行错误

[英]'Invalid token '=' in class, struct, or interface member declaration.' error with two lines in a unity script

我遇到了这个错误的问题,该错误一直出现在提到的行中: spriteRenderer = GetComponent<SpriteRenderer>(); selectable = GetComponent<Selectable>();

从我的统一引擎显示的错误消息是

'class、结构或接口成员声明中的无效标记'='。'

问题似乎出在这些行中的相等符号周围,我不明白它有什么问题。 请问我能得到任何建议吗?

void Start()
{
    List<string> deck = Solitaire.GenerateDeck();
    solitaire = FindObjectOfType<Solitaire>();

    int i = 0;
    foreach (string card in deck)
    {
        cardFace = solitaire.cardFaces[i];
        break;
    }
    i++;
}
spriteRenderer = GetComponent<SpriteRenderer>();
selectable = GetComponent<Selectable>();

// Update is called once per frame
void Update()
{
    if (selectable.faceUp == true)
    {
        spriteRenderer.sprite = cardFace;
    }
    else
    {
        spriteRenderer.sprite = cardBack;
    }
}

看起来您正在创建两个将在您的类方法中使用的对象。 您需要在 class 中为此创建一个字段(C# 是一种强类型语言,您需要向编译器解释您要实现的目标)。 对于局部变量,您可以使用var关键字,但对于需要声明完整类型的字段,如下所示:

private SpriteRenderer _spriteRenderer = GetComponent<SpriteRenderer>();
private Selectable _selectable = GetComponent<Selectable>();

但是,更好的解决方案是将其移动到您的 function Update中:

// Update is called once per frame
void Update()
{
    var spriteRenderer = GetComponent<SpriteRenderer>();
    var selectable = GetComponent<Selectable>();

    if (selectable.faceUp == true)
    {
        spriteRenderer.sprite = cardFace;
    }
    else
    {
        spriteRenderer.sprite = cardBack;
    }
}

你也删除了与true比较:

// Update is called once per frame
void Update()
{
    var spriteRenderer = GetComponent<SpriteRenderer>();
    var selectable = GetComponent<Selectable>();

    if (selectable.faceUp)
    {
        spriteRenderer.sprite = cardFace;
    }
    else
    {
        spriteRenderer.sprite = cardBack;
    }
}

或者,使用三元运算符

// Update is called once per frame
void Update()
{
    var spriteRenderer = GetComponent<SpriteRenderer>();
    var selectable = GetComponent<Selectable>();
    spriteRenderer.sprite = selectable.faceUp ? cardFace : cardBack;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM