几个if语句 - 有些不起作用 - Unity C#

时间:2017-02-17 23:33:16

标签: c# unity5

使用这样的代码,前四个循环工作正常。底部的两个没有。

        if (Input.GetKeyDown(KeyCode.RightArrow)){
        if(selected.x<5){
        selected=selected + new Vector3 (1,0,0);
    }
}
    if (Input.GetKeyDown(KeyCode.LeftArrow)){
        if(selected.x>-5){
        selected=selected + new Vector3 (-1,0,0);
    }
}
    if (Input.GetKeyDown(KeyCode.UpArrow)){
        if(selected.z<5){
        selected=selected + new Vector3 (0,0,1);
    }
}
    if (Input.GetKeyDown(KeyCode.DownArrow)){
        if(selected.z>-5){
        selected=selected + new Vector3 (0,0,-1);
    }   
    if (Input.GetKeyDown(KeyCode.Escape)){
        print("escape");
        currentState=BattleStates.NONE;
        gameManager.GetComponent<gameManager>().PlayerChoice();
        gameManager.GetComponent<gameManager>().ShowMenu();

    }
    if (Input.GetKeyDown(KeyCode.Space)){
        print("pressed");
        destination=selected;
        currentState=BattleStates.NONE;
        gameManager.GetComponent<gameManager>().Resolution();

    }

如果我将最后两个移动到顶部,它们将起作用,但不会移动到底部的四个。我看不出这方面的解释。 任何人吗?

1 个答案:

答案 0 :(得分:3)

问题在于这部分代码:

if (Input.GetKeyDown(KeyCode.DownArrow)){
    if(selected.z>-5){
    selected=selected + new Vector3 (0,0,-1);
}

由于您使用的缩进样式,很难看出哪个开口支架与哪个闭合支架一起使用。因此,您缺少一个结束括号,因此这一行中包含以下功能。

如果您遇到简单的if函数已经遇到问题,那么一旦代码变得更复杂,您可能会感到挣扎。

考虑使用Allman缩进样式。这样做会使您的代码看起来像这样:

if (Input.GetKeyDown(KeyCode.RightArrow))
{
    if(selected.x<5)
    {
        selected=selected + new Vector3 (1,0,0);
    }
}

if (Input.GetKeyDown(KeyCode.LeftArrow))
{
    if(selected.x>-5)
    {
        selected=selected + new Vector3 (-1,0,0);
    }
}

if (Input.GetKeyDown(KeyCode.UpArrow))
{
    if(selected.z<5)
    {
        selected=selected + new Vector3 (0,0,1);
    }
}

if (Input.GetKeyDown(KeyCode.DownArrow))
{
    if(selected.z>-5)
    {
        selected=selected + new Vector3 (0,0,-1);
    }
    // Here you can easily see that the closing bracket is missing.

if (Input.GetKeyDown(KeyCode.Escape))
{
    print("escape");
    currentState=BattleStates.NONE;
    gameManager.GetComponent<gameManager>().PlayerChoice();
    gameManager.GetComponent<gameManager>().ShowMenu();
}

if (Input.GetKeyDown(KeyCode.Space))
{
    print("pressed");
    destination=selected;
    currentState=BattleStates.NONE;
    gameManager.GetComponent<gameManager>().Resolution();
}