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() 可以在每一帧都进行检查。
挑战
简单按住 Space 应该会抬起闸门。
- 在
Update()中的两条注释下方,在花括号内写入if (open)和transform.position = new Vector3(0, 3, 0);。 - 在它后面,在花括号内写入
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 在线编辑器