语句游戏示例C#游戏开发快速入门大学霸

明明白白学C#

明明白白学C#

语句游戏示例C#游戏开发快速入门大学霸

 

3.6  语句语句游戏示例C#游戏开发快速入门大学霸

学习过英语的人,都该知道“语句”。因为书写英语文章的时候,我们通常使用点“.”作为英语语句的结束标志。同理,当你书写一行代码的时候,可以将分号“;”置于代码的末尾处,这用于表示这是一条代码语句。

一行代码就是一条语句吗?答案是否定的。C#语法规定,语句是以分号“;”为结束标志的。例如:

public int number1 = 2;

这行代码的作用是声明一个名为number1的变量,存储的数据是2。这是一行代码,它以分号“;”结尾,因此它也是一条语句!再看下面的代码:

public

int

number1

=

2;

虽然代码被分成了5行书写,但是因为只出现了一个分号,所以这也是一条语句。读者可以使用这条语句,替换上面的那条语句,运行效果是没有丝毫区别的。

提示:尽管在语法上是正确的,但是不推荐读者使用这种方法。因为写成这样的代码会占用更多的视觉空间。也就是说,一次可以看到的语句数量减少了,最终使得脚本代码变得极难阅读。推荐读者将一个语句写到一行,语句太长的话,再考虑分成两行来写。

3.7  游戏示例语句游戏示例C#游戏开发快速入门大学霸

本章学习了那么多关于变量的知识,那么到底在游戏中有什么实际意义吗?读者可以先从变量着手,进而发觉它对于游戏的意义。变量的作用是存储数据,而这个数据在脚本代码中会被用于做其它处理,进而影响到游戏场景中游戏对象的行为。如果这个脚本被赋予了某一个具体的游戏对象,那么就可以通过设置脚本组件下的属性值,进而改变脚本代码中操作的数据,这同样会影响到游戏对象的行为。这么说果然还是太抽象了,下面将以一个示例说明。

(1)为游戏项目里的游戏场景添加2个游戏对象:Cube和Directional,前者是脚本打算操作的游戏对象,后者是负责游戏场景照明的游戏对象。调整游戏场景中3个游戏对象的位置,使得Game视图达到最佳的效果,如图3-16所示。

提示:3个游戏对象?难道不是2个吗?希望读者没有忘记Unity为游戏场景自动添加的Main Camera,此对象决定了Game视图的成像效果。

图3-16  Unity里的Scene和Game视图语句游戏示例C#游戏开发快速入门大学霸

(2)在Project视图里,新建一个脚本,命名为MyScript,打开此脚本并添加下面的代码:

01     using UnityEngine;

02     using System.Collections;

03

04     public class MyScript : MonoBehaviour

05     {

06              //声明4个变量

07              public GameObject myCube;

08              public int transSpeed = 100;

09              public float rotaSpeed = 10.5f;

10              public float scale = 3;

11              void OnGUI()

12              {

13                        if( GUILayout.Button (“移动立方体”) )

14                       {

15                                 myCube.transform.Translate (Vector3.forward*transSpeed*Time.deltaTime,Space.World);

16                       }

17                        if( GUILayout.Button (“旋转立方体”) )

18                       {

19                                 myCube.transform.Rotate (Vector3.up*rotaSpeed,Space.World);

20                       }

21                        if( GUILayout.Button (“缩放立方体”) )

22                       {

23                                 myCube.transform.localScale = new Vector3(scale,scale,scale);

24                       }

25              }

26     }

脚本的07~10行,一共声明了4个变量,且都使用public修饰,所以它们可以作为属性,出现在组件下。后3个变量还被初始化了,除了第1个变量的数据类型读者无需在意外,后3个变量的类型在本章中都有介绍。

提示:读者只要体会变量在脚本中的书写形式,以及对于游戏的作用效果就可以了,无需太过关注其它部分。其它部分不是本章讲解的重点,但它们帮助实现了游戏的效果。

(3)将脚本MyScript赋予Main Camera,脚本就会作为组件出现在Main Camera对象的Inspector视图中,如图3-17所示。

图3-17  Main Camera对象的Inspector视图语句游戏示例C#游戏开发快速入门大学霸

脚本组件下的属性名与脚本中声明的变量名基本一致,且属性框中已经有值了,这个值是在变量初始化时指定的。

提示:My Cube属性的值需要读者手动添加,添加的方法是,将Hierarchy视图里的Cube对象,拖动到My Cube属性的属性框中,如图3-18所示。

图3-18  为属性My Cube赋值

(4)运行游戏,在Game视图的左上角会出现3个按钮:移动立方体、旋转立方体和缩放立方体。单击按钮,即可完成对立方体对象的指定操作,如图3-19所示。

图3-19  通过单击游戏视图上的按钮,操纵游戏中的立方体

(5)读者可能要问了,变量对于游戏的意义还没有体现出来了,别急,现在就体现变量的作用。读者如果要在Unity中寻找变量的话,可能就要失望了,因为变量早就转变成属性了。因此对属性的操作,就是对变量的操作。

读者多“玩”会儿这个游戏就会发现,立方体的移动速度、旋转速度,甚至是缩放倍数是固定的!如果读者想要改变它们的话应该怎么办?读者想的没错,这个时候属性就派上用场了,还记得那3个属性Trans Speed、Rota Speed和Scale吧,手动修改它们的属性值,然后再单击按钮试试,怎样效果不一样了吧,如图3-20所示,以属性Scale的修改为例。

图3-20  通过修改属性Scale的值,进而改变立方体的缩放倍数

3.8  小结语句游戏示例C#游戏开发快速入门大学霸

本章站在脚本变量的角度上,全方位的向读者介绍了组件的属性。内容包括:属性名(变量名)的本质就是一个指代,它并非真正的数据;并非所有的变量在组件的属性都是可见的;即时同样是属性,也存在不同的类型;脚本中变量的编写规则。最后,本章以一个简单的游戏收尾,用以凸显变量,或者说属性之于游戏的重要作用语句游戏示例C#游戏开发快速入门大学霸。

Comments are closed.