![](/img/trans.png)
[英]I get an error while trying to run this Unity-C# Script (Invalid token 'void' in class, struct, or interface member declaration)
[英]'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.