C#开发Unity游戏教程之判断语句

C#开发Unity游戏教程之判断语句

游戏执行路径的选择——判断

玩家在游戏时,无时无刻不在通过判断做出选择。例如,正是因为玩家做出的选择不同,才导致游戏朝着不同的剧情发展,因此一个玩家可以对一个游戏百玩不厌!既然提到了这一点,借此机会本章就来说明,在脚本中实现游戏为玩家提供更多选择的方法。

Unity游戏的执行路径

游戏如此受玩家欢迎的原因,除了优质的画面效果以外,就是游戏的可交互性。也就是说,游戏是可以与玩家互动的,这也是游戏与视频的不同之处。游戏允许玩家在一定程度上控制游戏的执行路径,虽然这些路径都是游戏预先设定好的。例如,《仙剑奇侠传》这款游戏中,往大了说玩家可以决定触发哪个剧情去完成哪个任务,往小了说玩家可以决定战斗时,使用法力还是武器,以及使用什么招式,如图5-1所示。

图5-1  《仙剑奇侠传》游戏的剧情与攻击方式的选择

玩家在玩游戏的过程中,总是在做出一些选择,而这些选择直接影响了游戏的执行路径。玩家的选择效果是游戏体现出来的,但是游戏实现这一效果的内在原因是,游戏代码脚本中添加了允许玩家进行选择的判断语句。

Unity中判断玩家的选择

上一节说明了,脚本中的判断语句对于游戏的重要性,但是列举的例子还是太抽象了。读者无需为此感到困惑,作者可以在此处列举些更实际的例子:玩家是否按下了游戏视图中的特定按钮,或者键盘上的特定按键,玩家是否击败了小怪等等。这些都是游戏脚本中需要使用判断语句的地方。

Unity中最常用的判断语句——if

在生活中,人类习惯使用“是”和“否”做出判断,但在游戏的脚本中,通常是使用“真”和“假”来做出判断的。本小节将以脚本中最常用的if语句来说明,在脚本中做出判断的方法。

1.if语句

在脚本中,if语句的书写格式如下,表示的游戏执行流程如图5-2所示。

  • if(需要判断的部分)
  • {
  • //语句或者语句块;
  • }
  • q  if及其后面的括号“( )”是必不可少的;
  • q  大括号“{ }”里包含的是语句块,即多条语句,如果语句块里只有一条语句,那么大括号“{ }”就可以省略;
  • q  当从判断部分得出的结论是true时,就执行大括号里面的语句,否则就直接跳过大括号里的语句;

图5-2  if语句表示的游戏执行流程图

2.需要判断的部分

这部分代码可以是表达式,也可以是方法。但是无论如何,这个部分应该可以明确的给出true或者false。true和false实际上是布尔类型的数据(在第2章中曾以表格的形式列出)。也就是说,从需要判断的部分里,可以得到一个数据,而这个数据是布尔类型的。至于表达式,它既可以是逻辑表达式,又可以是关系表达式,如图5-3所示。

图5-3  判断部分的构成和结果

3.逻辑表达式

构成逻辑表达式的逻辑运算符有3种:!(非)、&&(与)和||(或),这种表达式的运算结果如表5.1所示。

表5.1  逻辑表达式的运算结果

注释:a和b是参与逻辑运算的两个数据。

4.关系表达式

构成关系表达式的关系运算符有6种,它们的名称、使用示例及功能如表5.2所示。

表5.2  关系运算符、使用示例及功能

Unity游戏中的if语句游戏示例

请按照下面的步骤,完成游戏示例的制作:

(1为游戏场景添加3个游戏对象:Directional light、Sphere和Plane。调节各游戏对象在游戏场景中的位置、朝向和大小,如图5-4所示。得到的游戏场景和游戏视图,如图5-5所示。

图5-4  设置各游戏对象Transform组件下的属性

图5-5  在Scene和Game视图里,查看各游戏对象的相对位置,以及游戏视图效果

Sphere是玩家在游戏中需要操作的游戏对象,而Plane则是为了模拟游戏中的“地面”而存在。

(2在Hierarchy视图里选中Sphere对象,然后单击Component|Physics|Rigidbody命令,即可为Sphere对象添加刚体(Rigidbody)组件,如图5-6所示,此组件将使得Sphere对象如现实世界一般,会受到重力的影响。如果Sphere在空中的话,那么它就会因为收到重力的影响而下坠。

图5-6  为Sphere对象添加的刚体组件

(3打开脚本MyScript,并添加下面的代码:

  • 01     using UnityEngine;
  • 02     using System.Collections;
  • 03
  • 04     public class MyScript : MonoBehaviour
  • 05     {
  • 06              private GameObject mySphere;
  • 07              private Vector3 myVec;
  • 08              void Start()
  • 09              {
  • 10                       mySphere = GameObject.Find ("Sphere");
  • 11              }
  • 12              void Update()
  • 13              {
  • 14                       myVec = mySphere.transform.position;
  • 15                        //判断小球是否在Y轴方向上,超过了一定的范围,简单来说就是是否达到了一定的高度
  • 16                       if(myVec.y > 4)
  • 17                                 myVec.y = 4;
  • 18                       mySphere.transform.position = myVec;
  • 19              }
  • 20              void FixedUpdate()
  • 21              {
  • 22                        //判断玩家是否按下了鼠标的左键
  • 23                       if(Input.GetMouseButton(0))
  • 24                                 mySphere.rigidbody.AddForce (Vector3.up*20);
  • 25              }
  • 26     }

将此脚本赋予Main Camera对象。

  • q  代码16、17行是if语句,括号里表示判断的部分是一个关系表达式。因为只有17行一条语句,所以没有使用大括号“{ }”,当关系表达式的值为true时,执行此语句;
  • q  代码23、24行是if语句,括号里表示判断的部分是一个方法,即Input.GetMouseButton(),作用是检测玩家是否按下了鼠标的左键。同样只有24行一条语句,所以也省略了大括号“{ }”,当方法返回的值是true时,执行此语句;

提示:Input.GetMouseButton()帮助文档的文字描述如图5-7所示,从中可以看出方法会返回bool类型的数据,而且判断的标准就是玩家是否持续按下了指定的鼠标按键。

图5-7  Input.GetMouseButton()的帮助信息

(4运行游戏,由于球体最初在空中,此时球体只是受到了重力的影响,因此会向下坠落,直到降落到“地面”上为止。如果玩家此时按下鼠标左键的话,就会给球体施加一个向上的力,这个力比重力大,因此小球会向上运动。也就是说,当玩家按下鼠标左键以后,小球会向上运动。但是小球向上运动的范围是有限的,达到了这个限度以后,就不会再继续上升了,如图5-8所示。

图5-8  游戏示例运行效果

Unity开发中的其它判断语句

除了if语句以外,C#还提供了一些其它的判断语句,本小节会做简要介绍。如果需要的话,读者可以查阅专门讲解C#语法的书籍,然后将它们灵活的运用在游戏脚本的编写当中。

1.if-else语句

此种类型的语句与if语句的区别是,当判断部分的结果为false时,会执行另一个语句。此种语句表示的游戏执行流程如图5-9所示。

图5-9  if-else语句表示的游戏执行流程图

2.if-else-if语句

此种类型的语句,属于多重判断语句,也就是说,需要判断的部分不止一处,且每处的判断都会导致不同的执行流程,如图5-10所示。

图5-10  if-else-if语句表示的游戏执行流程图

3.swtich语句

此种类型的语句,所表示的游戏执行流程,与if-else-if语句类似,它们二者可以互换。尽管流程是类似,但是给代码阅读者的直观感受却是不同的,如图5-11所示。

图5-11  switch语句表示的游戏执行流程图

本文选自:C#游戏开发快速入门大学霸内部资料,转载请注明出处,尊重技术尊重IT人!

时间: 2024-10-13 20:44:32

C#开发Unity游戏教程之判断语句的相关文章

C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判定玩家是否有权限做出这种选择,然后才决定是否为玩家执行此选择.例如,<仙剑奇侠传>这款游戏,进入剧情"荷叶迷宫时",会要求玩家击碎迷宫里的5尊雕塑,如图5-12所示.但是击碎的前提是,玩家身上必须携带有"锤子".也就是说系统会遍历玩家身上所有的资源,如果有锤

C#开发Unity游戏教程之使用脚本变量

C#开发Unity游戏教程之使用脚本变量 使用脚本变量 本章前面说了那么多关于变量的知识,那么在脚本中要如何编写关于变量的代码,有规章可循吗?答案是有的.本节会依次讲解变量的声明.初始化.赋值和运算. Unity脚本中声明变量 要想在脚本中使用变量,就必须先声明(declare).这就意味着,需要先告诉Unity,有这样一个变量存在,然后才可以在Unity中使用这个变量.那么,该如何将这个变量存在的事实告知Unity呢?答案就是声明.实际上,读者已经在本章见过多次变量的声明了,没错就是图3-11

C#开发Unity游戏教程之游戏对象的行为逻辑方法

C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑--方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要内容是变量,但是在章节的最后为了展示游戏效果,也用到了它.现在看来方法真的是无处不在,并且不可或缺.它甚至都可以影响游戏对象的行为逻辑!因此本章终于到了不得不介绍它的时候了. Unity游戏对象的行为逻辑 游戏场景中,有些游戏对象是静止的,例如,树木.山峰.石头等等.而另外一些游戏对象则是运动的,它

C#开发Unity游戏教程之游戏对象的属性变量

C#开发Unity游戏教程之游戏对象的属性变量 Unity游戏对象的属性--变量 通过对上一章的学习,读者应该了解到了,游戏对象上的属性与脚本中的变量,建立联系的方式就是将脚本赋予游戏对象.上一章仅仅是简单的介绍了脚本中的变量,读者一定只是瘾,如今好了.作者将使用一整章的篇幅介绍变量与属性. Unity游戏对象的属性 在Unity中.游戏场景中游戏对象的属性,能够在Inspector视图里查看,想看哪个游戏对象的属性.就使用鼠标选中哪个游戏对象就可以. 比如,要查看游戏场景中Main Camer

C#开发Unity游戏教程之Unity中方法的参数

C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别方法的作用吧.既然C#的语法规定方法就应该这么写,肯定是有一定道理的.如果是上升到战略意义的道理,连作者也不是很明白,但是作者知道这对括号里可以添加“参数”. Unity中参数的作用 要说明参数的作用,就必须从方法说起.方法可以处理变量中的数据,进而影响游戏对象的行为逻辑,这是本章前面一直在强调的.

unity基础开发----unity游戏速度更快的简易检查表

让游戏速度更快的简易检查表 保持顶点数在 200K 下面,针对 PC 时每帧应为 3M,主要取决于目标 GPU. 若使用内置着色器,请在移动 (Mobile) 或未点亮 (Unlit) 的类别中选择.它们对非移动平台相同有效,可是是更复杂的着色器的简化和限制版本号. 每一个场景中不同材质的数量尽可能少 - 不同对象之间尽可能共享相同的材质. 在非移动对象上设置静态 (Static) 属性,同意静态批处理 (static batching) 等内部优化. 切勿在不必要的情况下使用像素灯 - 选择仅

C#开发Unity游戏教程之Scene视图与脚本的使用

C#开发Unity游戏教程之Scene视图与脚本的使用 Unity中Scene视图的快捷操作 Scene视图是开发人员开发游戏时,操作最频繁的视图. 由于一旦一个游戏对象被加入到游戏的场景中,就须要首先使用鼠标为这个游戏对象设置出合适的状态. 并且开发人员还须要多角度的观察游戏场景中的各游戏对象.基于以上的原因,Unity提供了非常多快捷操作,支持开发人员对Scene视图所做的各种操作.常见的操作方式有: 直接按下键盘上的Q.W.E.R键.就可以选中Unity左上角,工具栏上的4个button.

IOS开发 UNITY游戏开发 APP开发 CocosSharp游戏开发

上海诸君信息科技有限公司致力于一流的创新软件产品设计定制,服务客户遍及全球, 公司有多款精心设计的软件产品,如诸君工作系统.餐饮一体化管理系统.PadOrder电子菜谱.CDM文档管理系统.清洁能源参数优化系统.银行iPad文件管理系统等. 我们提供优秀的综合软件与游戏开发与咨询.管理软件定制开发.点单软件与移动客户端(WP,Android,iOS)软件开发,为全球多家软件公司.国企.医疗.能源机构提供优秀的应用解决方案,欢迎咨询! 我们为海内外客户提供先进的软件解决方案,因况制宜.使用最适合的

Unity 游戏移植到 Windows10 之路 -- 环境搭建

孙广东   2015.8.31 原文:http://blogs.msdn.com/b/windows__windows_game_dev_faq_/archive/2015/08/19/unity-windows10.aspx Windows10 是微软公司最新一代的跨平台及设备应用的操作系统.它统一了包括个人电脑.平板电脑.智慧型手机.嵌入式系统.Xbox One以及新产品Surface Hub和HoloLens等等的整个Windows产品系列的作业系统,共享一个通用的应用程式架构(UWP)和