购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.4 C#脚本基础

3.4.1 C#脚本基本结构

在Unity中编写程序一般使用C#语言(“#”读作“sharp”)。用来编写C#语言的文本文件就叫作C#脚本。

新建C#脚本:在资源管理面板中执行“Create”→“C# Script”命令。

img
img

双击打开脚本,当前脚本中出现的就是Unity定义好的初始C#脚本。其基本结构如下。

img

命名空间是引用一些封装好的内容,这样才可以在脚本中使用一些定义。比如要在脚本中使用Image类型,就必须引用UGUI的命名空间using UnityEngine.UI;。

在定义类的位置需要注意C#脚本的类名必须同脚本文件的名字相同。“MonoBehaviour”是继承的类。简单地说,因为这里继承了“MonoBehaviour”,脚本才有了可以拖动并依附给场景中游戏对象的功能。

花括号“{ }”,它规定了类、函数、语句的内容范围。当它们执行的时候,写在花括号里的内容才会被执行。

括号“()”,用来规定参数、条件等内容的书写范围。

双斜杠“//”,用来定义注释,双斜杠所在的这一行是不会被运行或者编译的。临时不需要的代码我们也可以用这种方法让它暂时失效。

Start函数:写在Start函数中的代码,在脚本开始运行的时候执行一次。

Update函数:写在Update函数中的代码,程序运行的每一帧都会执行。初学者可以理解为程序运行时一直在执行。

3.4.2 函数(方法)

函数也叫作方法,可以看作脚本中的一个模块,能够实现特定的功能。

img

这个函数中,public是对函数进行修饰,表示函数为公有函数,可以被其他脚本调用。

void位置是函数返回值,返回值可以简单理解为:当把函数看作一个算式时,返回值就是计算结果。这里void代表该函数不需要返回值,只是单纯执行函数中的命令。

函数名称由自己定义,但不能使用系统已经定义好的默认名称。

“()”为函数的参数,不填写则代表该函数不使用参数。

Application.Quit();是退出程序的命令,也就是说,当调用Button_A这个函数时,就会退出程序。

3.4.3 变量

变量是编程中的一个抽象概念,可以自己定义一个名称来代表某一个类型的数据。Unity中常用来引用或者存储一些具体的对象。

例如,Unity场景中有一个人物模型,现在要使用代码控制人物进行旋转,那么代码和模型之间需要建立一种联系。

此时可以在脚本中申请一个变量:

public GameObject Person_A;

其中,GameObject是这个变量的类型,游戏对象类型。

Person_A是我们自己给这个人物模型定义的变量名称。将人物模型指定给这个变量后,在脚本中Person_A就代表人物模型,所有对Person_A下达的命令就是对这个人物模型下达的命令。

public是关键字“公有”,在这里最直接的意义就是能够让这个变量在Unity的检视面板中显示出来,便于将变量与具体模型之间达成联系,也就是方便给变量赋值。

新建一个脚本,声明变量,保存脚本,把脚本拖动到场景资源管理面板Hierarchy中任意一个游戏对象上,查看这个游戏对象的检视面板,检视面板脚本属性中出现了这个公有变量,将模型拖动到变量后方的方框中,就完成了变量的赋值。

img
img

变量之所以称为变量,是因为它指代的内容是可以变化的,如果给Person_A指定的不是刚才的人物模型,而是汽车模型、灯光等其他游戏对象,那么Person_A在代码中所指代的就是汽车、灯光等这些具体对应的对象。

变量的类型有很多,不同的变量类型可以代表的内容也不同。常见的变量类型如下。

● GameObject:游戏对象,可以指代场景面板中出现的任何元素。

● bool:布尔类型,布尔类型只有两个值,即true(真)、false(假)。

● Int:可以理解为整数类型。

● float:浮点数类型,可以理解为小数类型,浮点数的值末尾要添加f。

● texture:普通纹理类型,可以理解为普通图片。

● sprite:UGUI中用到的精灵图片类型。

以bool及float类型变量为例。申请两个变量,这类变量最好在申请的时候就给予赋值。

public bool B_A=false;

public float F_A=5.6f;

此时B_A这个变量在代码中就代表false(假),F_A这个变量在代码中就代表5.6这个数。

将脚本附给场景资源管理面板中的游戏对象,则可以在游戏对象检视面板中看到这两个变量。

img

变量的值可以直接在检视面板中进行修改,并且变量的值优先以面板为准。例如,在面板中将F_A改为9.33,则代码中F_A所代表的值就是9.33这个数。

这些变量也可以通过代码中的计算及赋值进行动态改变。

3.4.4 计算与赋值

编程中的计算与普通数学中的计算类似,常用的加减乘除分别用“+”、“-”、“*”、“/”四种符号。

给变量赋值直接使用等于号“=”。

例:申请浮点型变量。

public float F_A=5.0f;

此时F_A就代表5这个数字。然后通过计算给它赋予一个新的值。

F_A=2.0f*3.3f;

执行这段代码后,此时F_A这个变量就代表6.6这个数字。

常见的计算方法还有“++”、“--”。“++”每次执行会对变量执行加1的操作。“--”每次执行会对变量执行减1的操作。

例:

public int i=5;

此时i的值为5,然后若执行i--;则i的值变为4。

3.4.5 if语句

if语句是编程中最常见的代码,是首先判断条件,当条件满足时则执行具体命令的一段代码。

具体格式为:

if(条件){要执行的具体命令}

判断条件常用的符号有“==”和“!=”。“==”用来判断符号两边的值是否相同,如果相同则条件成立。“!=”用来判断符号两边的值是否不同,如果不同则条件成立。

还有判断范围条件的符号“>”和“<”,“>”符号左边的值如果大于右边,则条件成立。“<”符号同理。

无论如何判断,其实条件的结果都是布尔值,即满足条件时结果就是true(真),不满足条件则结果为false(假)。

例如:

1==2,符号“==”两边的值显然不等,那么“1==2”就不满足条件,也就是说,“1==2”这个条件的值是false。

5>3,符号“>”左边的数大于右边,则“5>3”满足条件,也就是说,“5>3”这个条件的值就是true。

例如:申请两个变量,一个为布尔变量,另一个为整数变量。

public bool B_A=true;

public int I_A=5;

如果运行下方这个if语句,则条件“B_A==true”中由于B_A这个布尔变量的值为true,所以“B_A==true”这个条件是成立的,因此会执行“I_A=7”这段代码,把I_A这个变量的值变为7。

如果运行下方的这个if语句,则条件“B_A==false”并不成立,所以无法运行其中的代码“I_A=9”,无法对变量I_A进行赋值。

if(B_A==true){ I_A=7; }

if(B_A==false){ I_A=9; }

如果条件本身就是布尔值,则无须使用判断符号,例如:

public bool B_A=true;

public int I_A=5;

if语句可以写作if(B_A){I_A=12;},如运行这个if语句,则由于条件中的B_A本身值为true,则条件达成,可以执行其中的代码“I_A=12;”对I_A进行赋值,此时I_A的值就是12。 G1mE8yTcBfNgTlHn9HrioI+GGPKH+YCwWvdR9ex+K9fFT6HkcDTRA42u0U/8ltnf

点击中间区域
呼出菜单
上一章
目录
下一章
×