Menu
CoddyTech

If 和 Else

本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 6 课,共 85 课。

bool 保存两个值之一:true 或 false。门开着吗?玩家在地面上吗?游戏结束了吗?

bool gameOver = false;

只有条件为 true 时,if 才会运行其中的语句;条件不成立时,else 会运行其中的语句。花括号 { } 包含属于每个部分的语句:

if (gameOver)
{
    transform.position = new Vector3(0, -2, 0);
}
else
{
    transform.position = new Vector3(0, 2, 0);
}

游戏结束时,这段代码会让对象沉到视线之外;游戏继续时,则会让对象保持在上方。这样的代码要放在方法中,例如 Update(),绝不能放在类的最后一个 } 后面。

Unity 也会用 bool 值来回答问题。玩家按住空格键时,Input.GetKey(KeyCode.Space) 的值为 true,其余时间则为 false,因此 Update() 可以在每一帧都进行检查。

challenge icon

挑战

简单

按住 Space 应该会抬起闸门。

  1. 在 Update() 中的两条注释下方,在花括号内写入 if (open) 和 transform.position = new Vector3(0, 3, 0);。
  2. 在它后面,在花括号内写入 else 和 transform.position = new Vector3(0, 1, 0);。

按“开始”,点击游戏并按住 Space:闸门会升起,松开后会落下。然后点击“检查”。

亲手试试

using UnityEngine;

public class Gate : MonoBehaviour
{
    void Update()
    {
        bool open = Input.GetKey(KeyCode.Space);

        // 如果 open 为 true,就把门移到 (0, 3, 0)。
        // 否则,把门移到 (0, 1, 0)。
    }
}

Unity 脚本基础中的所有课

自己练习: Unity 在线编辑器