0
私は何が起こりたいですか? 'Return'を押すことによって、私はアクションを実行するif文を1つだけ期待します。最初のプレイスルーはうまくいきますが、Startgame()関数が再び呼び出されると、 'Return'キーが最初に押されると、両方のifステートメントがアクティブになります。なぜ私は不明です。Keycode.return in update()
using UnityEngine;
using System.Collections;
public class NumberWizard : MonoBehaviour {
int max;
int min;
int guess;
bool playerSelectedRange = false;
void StartGame()
{
max = 1000;
min = 1;
guess = 500;
playerSelectedRange = false;
print ("=======================");
print("Welcome to number wizard");
print ("The lowest number you can pick is 1. Would you like the maximum number to be 1000?");
print ("Up = Higher, Down = Lower, Return = Happy with this number");
}
// Use this for initialization
void Start() {
StartGame();
}
// Update is called once per frame
void Update() {
if (playerSelectedRange == true) {
if (Input.GetKeyDown(KeyCode.UpArrow)){
min = guess;
NextGuess();
}
else if (Input.GetKeyDown(KeyCode.DownArrow)){
max = guess;
NextGuess();
}
else if (Input.GetKeyDown(KeyCode.Return)){
print("I won");
StartGame();
}
}
if (playerSelectedRange == false)
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
max = max + 100;
MaxRange();
}
else if (Input.GetKeyDown(KeyCode.DownArrow)){
max = max - 100;
MaxRange();
}
else if(Input.GetKeyDown(KeyCode.Return)){
print ("Lets play!!!");
print ("Choose a number between 1 and " + max);
max = max + 1;
NextGuess();
playerSelectedRange = true;
}
}
}
void NextGuess()
{
guess = (max+min)/2;
print ("Is your number higher or lower than " + guess + "?");
print ("Up arrow key for higher. Down arrow key for lower. Return key for Correct");
}
void MaxRange()
{
print ("Do you want it to be " + max + "?");
print ("Up = higher, down = lower, return = Just right");
}
}
私には、キー押しの時にはまだ当てはまります。 – Pete
右ですが、コードは行に基づいて実行されます。したがって、コードを実行するとコードが実行され、値が変更され、値が変更されたときに別のif文が実行されます。 – jdmdevdotnet
私の解決策は、押された後の2番目のif文をチェックしません。私はこれがあなたが必要とするものだと思います。 – jdmdevdotnet