首页 > 解决方案 > 方法参数未被识别

问题描述

我的代码如下所示:

void Update()
{
  if (Input.GetKeyDown(KeyCode.G) && questCount == 6)
  {

    Score(sumFinal);

  }
}

public int Score(int sumFinal)
{
sumFinal = dCount - rCount;
return sumFinal;
}

Visual Studio 告诉我 sumFinal 在当前上下文中不存在。如何在 Update() 中成功返回 sumFinal?我是否正确理解参数?

附加问题:

在 Score() 函数的下方,我将文本设置为某些值:

public int Score(int sumFinal) 
{ 
sumFinal = dCount - rCount;
return sumFinal; 

if (sumFinal == 5 && questCount >= 5) 
{ 
labelText.text = "results"; 
}
} 

在 Update() 中调用此函数时,有没有办法可以分别运行 if 语句和 sumFinal 减法方程?简而言之,我如何分割函数,只调用它的特定部分?是否应该将返回类型设置为 void?

标签: c#

解决方案


Visual Studio 告诉我 sumFinal 在当前上下文中不存在。如何在 Update() 中成功返回 sumFinal?我是否正确理解参数?

方法Score看起来很棒!但是,当您调用它时,Score(sumFinal);您需要确保将值传递给该方法。在您的情况下,您可能忘记了在类的顶部有一个带有值的字段。

有没有办法可以分别运行 if 语句和 sumFinal 减法方程?

当然!您可以做什么,因为您Score在调用它时实际上并没有给出任何值,您可以删除该参数并返回它计算的值。

我们可以将文本更新为另一个调用的方法UpdateTextBox(),该方法获取结果Score()以确定是否应该更改文本

public class YourUnityClass : MOnoBehaviour
{
    int questCount = 0;

    int sumFinal = 0; // make sure that if you need to access this variable between methods that this field exists

    int dCount = 0;

    int rCount = 0;

    public TextMesh labelText;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.G) && questCount == 6)
        {
            // calculate and save the score
            sumFinal = Score();
            
            // check the score, and update the text if necessary
            UpdateTextBox(sumFinal);
        }
    }

    public int Score()
    {
        // calculate the score
        return dCount - rCount;
    }

    public void UpdateTextBox(int sumFinal)
    {
        // check to see if the score is high enough to change
        // the text
        if (sumFinal == 5 && questCount >= 5)
        {
            labelText.text = "results";
        }
    }
}

推荐阅读