2017-02-17 1 views
-2

このようなコードでは、最初の4つのループがうまく動作します。下の2つはそうではありません。いくつかのifステートメント - 動作しないもの - Unity C#

 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(); 

    } 

最後の2つを上に移動すると、上に移動すると動作しますが、下に移動した4つは移動しません。私はこれについての説明を見ることができません。 誰でも?

+1

あなたは '(Input.GetKeyDown(KeyCodeにある場合に、次のいずれかを開始する前に、あなたは、' '(Input.GetKeyDown(KeyCode.DownArrow))場合には閉じないでください。エスケープ)) '。適切な書式設定を使用していれば、すぐにこの問題に気づくでしょう。 IDEはコードを適切に整列させて使用するオプションを既に提供しているはずです。 –

+0

ループはなく、角括弧は完全に一致しません。 – dlatikay

答えて

3

問題は、このコードのセクションです:

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

により、使用しているインデントスタイルに、閉じているブラケットに行くどの開くブラケットを参照することは困難です。その結果、閉じ括弧が欠落しているため、以下の関数がこの中に含まれています。

これは既に単純なif関数で発生している問題であれば、コードが複雑になると難しいでしょう。

オールマンインデントスタイルの使用を検討してください。そうすることで、このようなあなたのコードを見てになるだろう:

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(); 
} 
+0

この回答が役に立ちましたら、あなたの受け入れた回答として投票してください、ありがとうございます。 – JMad

関連する問題