【问题标题】:I have the error CS0136, but I can't find a solution我有错误 CS0136,但我找不到解决方案
【发布时间】:2019-10-09 20:08:35
【问题描述】:

我有一个错误提示:(错误 CS0136:无法在此范围内声明名为“ facesRight”的本地或参数,因为该名称在封闭的本地范围中用于定义本地或参数)。我对此很陌生,所以我不知道它在说什么,也无法在网上找到任何关于它的信息。如果你们中的任何人都可以在这里帮助我,那就太好了

我正在尝试在 Unity 中制作动画翻转,但我不记得具体尝试了什么

    bool facingRight = true;
    bool facingLeft = false;

    if (facingRight == true && facingLeft == false)
    {
        if (Input.GetKey("a"))
        {
            transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
            bool facingRight = true;
            bool facingLeft = false;
        }
    }

    if (facingLeft == true && facingRight == false)
    {
        if (Input.GetKey("a"))
        {
            transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
            bool facingLeft = true;
            bool facingRight = false;
        }
    }

预期结果是我的动画在按 a 键时转身,然后在按 d 键时再次转身。

【问题讨论】:

  • 您在两个嵌套 if 中重新声明了两个变量。

标签: c# scope variable-declaration


【解决方案1】:

这是因为你已经声明了变量。

if 的内部作用域中删除bool

bool facingLeft = true;
bool facingRight = false;

并在if之间添加一个else以避免冲突。

但也许您最好使用不同的名称以获得更好的代码气味,具体取决于目标。

C# Variable Scopes

【讨论】:

  • 之所以有效,是因为bool 声明了一个新变量,而没有它,您只是分配给范围内的变量。跨度>
猜你喜欢
  • 2021-07-23
  • 2020-09-03
  • 1970-01-01
  • 2023-03-18
  • 2022-06-13
  • 2021-10-18
  • 1970-01-01
  • 2016-07-23
  • 2017-03-17
相关资源
最近更新 更多