使用这样的代码,前四个循环工作正常。底部的两个没有。
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();
}
如果我将最后两个移动到顶部,它们将起作用,但不会移动到底部的四个。我看不出这方面的解释。 任何人吗?
答案 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();
}