用代码来做判断(一)

计算机的一个主要责任就是要确定在特定的情况要保证发生特定的事。这就是电脑无论在运行应用还是游戏都会做的事。我们编写代码来确保我们的游戏对象在一时刻会做一个正确的事,并且行为会随着状况而更改。一个代码应该可以察觉到状况的改变并且为新的状况做好准备。这个会举一写状况改变和代码发现他们的例子。他会确定下一步代码何时执行。

在本章我们将会讨论:

  • 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的过程。

  1. 修改LearningScript
  2. 保存文件
  3. 在Unity中,点击Play
LearningScript

发生了什么?

这里是Console中的输出:

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语句

  1. 修改LearningScript
  2. 保存文件
  3. 在Unity中,点击Play
LearningScript

注意第11行使用的与符号,16行使用的或符号。

发生了什么?

这里是Console中的输出:

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:

Console

代码分析如下:

  • 第十一行的代码:
    if(temperature >= 35 && theBearMadeBigPottyInTheWoods)
    只有一个条件是正确的,因为30并不大于等于35,因此第一个条件是错误的。除非两个条件均为正确的,代码才会执行。

  • 第十六行的代码:
    if(temperature >= 35 || theBearMadeBigPottyInTheWoods)
    只有一个条件是正确的。
    因为30并不大于等于35,因此第一个条件是错误的。
    第二个条件是正确的。
    只要有一个条件为正确就会通过,所以没有任何改变,代码仍然会运行。

Have a go hero——改变theBearMadeBigPottyInTheWoods内的值

现在,改变theBearMadeBigPottyInTheWoods内的值为false。现在你可以看到,没有if语句会执行了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,523评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 使用if-else语句来执行不同的代码 至今为止,我们所见到的if语句都需要判断条件为true的时候才会去执行代码...
    这双鞋好贵阅读 404评论 0 1
  • Isotonix OPC-3 是一种等渗压营养补充品,由葡萄籽、红酒和松树皮萃取物融合制成。等渗补充剂与眼泪和血浆...
    PrincessSnowyNA阅读 9,426评论 0 0
  • 董小姐最近有点郁闷,她掰着手指头算了算,今年已经被三个男生拒绝过了,星座运势上明明说她今年的桃花运一直会很旺盛,怎...
    越王姓李阅读 1,127评论 7 21