我在 Unity 中同时得到 ')' 和 '}'
I get both ')' & '}' expected in Unity
这是我的代码:
void Update () {
Vector2 ChrP = transform.position;
if (ChrP == new Vector2(-3.03f, 3.02f))
{
if (float RightPress = Input.GetAxisRaw("Right")){
transform.position = new Vector2(-1.36f, 3.02f);
} if (float DownPress = Input.GetAxisRaw("Down")) {
transform.position = new Vector2(-3.03f, 1,401f);
} else {
return null;
}
}
所以在这段代码中我得到了问题:')' & '}' 预期并且很长时间未能解决它
问题出现在第 7 & 10 和 13 行。
这样做的原因是您试图在 if 语句中创建一个 variable/field,然后将其与……没有进行比较:
// here you're trying to create new variable of type float
// and assign its value instead of comparing if Axis <> 0
if (float RightPress = Input.GetAxisRaw("Right")){
transform.position = new Vector2(-1.36f, 3.02f);
}
要根据你没有使用 RightPress
来解决这个问题,你可以只检查 Input.GetAxisRaw(...)
的绝对值是否大于 0
:
if (Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f) {
transform.position = new Vector2(-1.36f, 3.02f);
}
另一个问题是你的方法 returns void
所以基本上你不应该 return 什么,你正在尝试 return 一个 null
值:
else {
return null;
}
通过删除此处的 null
来解决此问题。
我在这里看到的最后一个问题是您的方法缺少右括号(方法主体末尾的 }
)。所以完整的代码应该是这样的:
void Update ()
{
Vector2 ChrP = transform.position;
if (ChrP == new Vector2(-3.03f, 3.02f))
{
if ( Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f )
{
transform.position = new Vector2(-1.36f, 3.02f);
}
if ( Mathf.Abs(Input.GetAxisRaw("Down")) > 0.0f )
{
transform.position = new Vector2(-3.03f, 1.401f);
}
}
}
这是我的代码:
void Update () {
Vector2 ChrP = transform.position;
if (ChrP == new Vector2(-3.03f, 3.02f))
{
if (float RightPress = Input.GetAxisRaw("Right")){
transform.position = new Vector2(-1.36f, 3.02f);
} if (float DownPress = Input.GetAxisRaw("Down")) {
transform.position = new Vector2(-3.03f, 1,401f);
} else {
return null;
}
}
所以在这段代码中我得到了问题:')' & '}' 预期并且很长时间未能解决它 问题出现在第 7 & 10 和 13 行。
这样做的原因是您试图在 if 语句中创建一个 variable/field,然后将其与……没有进行比较:
// here you're trying to create new variable of type float
// and assign its value instead of comparing if Axis <> 0
if (float RightPress = Input.GetAxisRaw("Right")){
transform.position = new Vector2(-1.36f, 3.02f);
}
要根据你没有使用 RightPress
来解决这个问题,你可以只检查 Input.GetAxisRaw(...)
的绝对值是否大于 0
:
if (Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f) {
transform.position = new Vector2(-1.36f, 3.02f);
}
另一个问题是你的方法 returns void
所以基本上你不应该 return 什么,你正在尝试 return 一个 null
值:
else {
return null;
}
通过删除此处的 null
来解决此问题。
我在这里看到的最后一个问题是您的方法缺少右括号(方法主体末尾的 }
)。所以完整的代码应该是这样的:
void Update ()
{
Vector2 ChrP = transform.position;
if (ChrP == new Vector2(-3.03f, 3.02f))
{
if ( Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f )
{
transform.position = new Vector2(-1.36f, 3.02f);
}
if ( Mathf.Abs(Input.GetAxisRaw("Down")) > 0.0f )
{
transform.position = new Vector2(-3.03f, 1.401f);
}
}
}