计算机的一个主要责任就是要确定在特定的情况要保证发生特定的事。这就是电脑无论在运行应用还是游戏都会做的事。我们编写代码来确保我们的游戏对象在一时刻会做一个正确的事,并且行为会随着状况而更改。一个代码应该可以察觉到状况的改变并且为新的状况做好准备。这个会举一写状况改变和代码发现他们的例子。他会确定下一步代码何时执行。
在本章我们将会讨论:
- if语句
- 检查多种状况
- if-else语句
- 用户变更输入状况
- 遍历数组,集合和字典中的数据
让我们开始吧
使用if语句来测试条件
If,if,if. 如果我这么做,如果我那么做,如果这个发生了……
当然,你一生之中在为你的生活下着种种决定。我们一直在做这样的事,并且很少给下决定一个过程。就像我们每天做的一些决定,只是让他们在脑海中过一遍。Unity并没有人类那么diao的功能,所以我们需要把这些写下来,引导Unity为我们做决定。因为大多数人从来都不会把自己做决定的过程写下来,所以我们会从一个初学者的身份开始,尽管这非常简单。
并且if
是游戏对象最常用的逻辑判断工具。Data used to make these decisions is the information usually stored in some variables。在i语句中你可能会经常看到:如果这个状况出现了,那么我就要执行我的代码。
实验if判断的真假
一个简单的逻辑判断往往会有真假的概念:
- 用户摁了按钮
- 温度很低
- 这个角色死了
- 这熊在树洞里拉了一大坨翔!
这些简单的问题一般都会由人类回答,通常伴随着肯定与否定。在Unity中,答案会是true或者false。比如“这熊在树洞里拉了一大坨翔”就是true或者false。
动手时间——创建一对儿if语句
if语句演示了判断括号内条件是true还是false的过程。
- 修改LearningScript
- 保存文件
- 在Unity中,点击Play
发生了什么?
这里是Console中的输出:
代码分析:
第八行代码如下:
bool theBearMadeBigPottyInTheWoods = true;
生命了一个布尔类型的变量并分配给它true
。第十行代码如下:
if( theBearMadeBigPottyInTheWoods )
一个if
语句会尝试去判断括号内的内容是true
还是false
。
变量theBearMadeBigPottyInTheWoods
存储着true
值,因此,第11至13行的代码就会执行,就像Console图中的那样。
使用非符号来改变判断条件
你可能真在观察这个符号,非符号。它在代码中被表现为一个叹号。他会将判断条件的真假做改变。
第十五行的代码如下:
theBearMadeBigPottyInTheWoods = false;
将false
分配给了theBearMadeBigPottyInTheWoods
。第十七行代码如下:
if( ! theBearMadeBigPottyInTheWoods)
这是另一个if语句,但是这次theBearMadeBigPottyInTheWoods
存放的是false。
然而,变量的最开头有一个非符号,请看截图中红色箭头所指的地方。
这意味着条件不是false,当然就是true了。所以,第18行至20行的代码就会被执行,就像Console截图中的那样。
我想我能想象到你的问题,为什么不只判断true?当你在写if语句的时候就会发现,你经常会在判断条件是false的情况下去进行判断。你需要使你的代码在这两种状况下执行。比如,你可能会在用户不去按某个按钮的时候才执行某些代码。
带if语句中判断多个条件
有些时候你希望在你代码执行之前通过多个逻辑判断。这非常简单,这里有另外两个你可以使用的符号。
- 与:会写作&&来连接两个条件。
- 或:会写作||来连接两个条件。
动手时间——创建拥有多个条件的if语句
- 修改LearningScript
- 保存文件
- 在Unity中,点击Play
注意第11行使用的与符号,16行使用的或符号。
发生了什么?
这里是Console中的输出:
代码分析:
第八行的代码:
bool theBearMadeBigPottyInTheWoods = true;
将true
分配给了theBearMadeBigPottyInTheWoods
。第九行的代码:
int temperature = 40;
声明了一个值为40的int
型变量。第十一行的代码:
if(temperature >= 35 && theBearMadeBigPottyInTheWoods)
这个if
语句回来检查这个两个条件是否均为true
。
第一个条件是检测temperature
是不是大于等于35。
theBearMadeBigPottyInTheWoods
中存储的是true
。因此,两个条件均是正确的,代码可以继续执行。第十六行的代码:
if(temperature >= 35 || theBearMadeBigPottyInTheWoods)
这个if
语句用来检测这两个条件中是否至少有一个为true
。
我们已经知道这俩条件都是正确的,所以代码会继续执行。
Have a go hero——改变temperature中的值
尝试将temperature
修改至30
。这样的话,只有一个if
语句会是true:
代码分析如下:
第十一行的代码:
if(temperature >= 35 && theBearMadeBigPottyInTheWoods)
只有一个条件是正确的,因为30并不大于等于35,因此第一个条件是错误的。除非两个条件均为正确的,代码才会执行。第十六行的代码:
if(temperature >= 35 || theBearMadeBigPottyInTheWoods)
只有一个条件是正确的。
因为30并不大于等于35,因此第一个条件是错误的。
第二个条件是正确的。
只要有一个条件为正确就会通过,所以没有任何改变,代码仍然会运行。
Have a go hero——改变theBearMadeBigPottyInTheWoods内的值
现在,改变theBearMadeBigPottyInTheWoods
内的值为false。现在你可以看到,没有if语句会执行了。