2016-04-09 14 views
0

上矢印を押すたびにGame();を読み込もうとしていますが、実行されません。これはコードの一部です。上向きの矢印が押されるたびに、私はそれがGame();を実行したいと思って、それがなぜそうでないのか分かりません。私はプログラミングには新しかったので、単純な問題かもしれないし、私はただばかげているだけです。C#GetKeyDownが更新プログラムの下で実行されない

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 

public class GameScript : MonoBehaviour { 

    public Text text; 

    string playerChoice = "Higher"; 


    void Update() { 
     if (playerChoice == "Higher") { 
      Game(); 
     } 
    } 

    void Game() { 
     text.text = "Is your number " + compGuess + "?\n\n Press Up Arrow for higher, Down Arrow for lower and Space for equal to."; 
     if (Input.GetKeyDown (KeyCode.UpArrow)) { 
      playerChoice = "Higher"; 
     } 
    } 
} 

答えて

0

ユニティエディタの左上隅にある[編集] - [プロジェクト設定] - [入力]に移動します。そこにいくつかのAxesがあり、Size変数を変更したり新しい変数を追加したりすることができます。キーを変更するには、ポジティブキーを編集するだけです。値が-1で正の場合、負のキーが返されます。Altは、Wのように使用できる代替キーです。上向き矢印タイプの場合は下向き矢印、右向きの場合は右向き、左向きの場合は左向き矢印の場合。次にif(Input.GetKeyDown(KeyCode.UpArrow)) {}を使用する代わりにあなたのコードでif(Input.GetAxis("AxisName")) {}を使用すると、軸名は機密ですので、スペースと大文字または小文字を使用する必要があります。

0

これはあなたにとって難しいことです。私はあなたがUpdate関数がどのように呼び出されたのか分かりません。現在のシーンの名前を取得するにはSceneManager.GetActiveScene().nameを使用し、の矢印を押すとSceneManager.LoadScene(SceneName);からのロードのシーンが表示されます。 は、更新機能で上矢印キーが押されているかどうかを確認する必要があります。あなたのコードは冗長です。以下はあなたのコードの修正です。

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 
using UnityEngine.SceneManagement; 

public class GameScript : MonoBehaviour { 

    public Text text; 

    // Update is called once per frame 
    void Update() 
    { 
     //Check if up key is pressed 
     if (Input.GetKeyDown(KeyCode.UpArrow)) 
     { 
      //Call the Game() function because up key was pressed 
      Game(); 
     } 
    } 

    void Game() 
    { 
     //text.text = "Is your number " + compGuess + "?\n\n Press Up Arrow for higher, Down Arrow for lower and Space for equal to."; 
     Debug.Log("Up Key Pressed!...Re-Loading Level"); 

     //Get name of current scene 
     string currentSceneName = SceneManager.GetActiveScene().name; 

     //Load current Scene again 
     SceneManager.LoadScene(currentSceneName); 

    } 
} 
関連する問題