交互媒体设计教案

Unity3D的数据类型以及PlayMaker的变量

2017-07-27  本文已影响1166人  shimmery

变量(variable)是用来储存数据的。

程序语言通常都会针对不同的用途设置不同的数据类型,以提高储存效率。因此在设置变量时,需要事先申明好变量的数据类型。

  • 保存“是”或者“非”的判断数据,仅需要1bit的储存空间;
  • 而 8bit = 1byte,于是1byte空间如果用来保存整数的话,就只能包括64个不同的整数了,不考虑负数的话只能063,考虑负数则只能-3132;
  • 但要保存一段文字内容,所需要的储存空间就大得多了。

Unity3D中常用的数据类型

Bool

“布尔”数据类型,其值要么是“True”(代表1)要么是“False”(代表0)。

Bool数据常常用来表达一个判断,例如“场景中是否有Player”、“是否发生了碰撞”等等。

Int

Int数据用来表示整数,包括正整数、负整数、0。

我们通常用int数据储存诸如:“xxx物体的数量”这样的数据。另外,for循环中也用int来计数。

Float

Float数据用来表示“小数”,同样包括正数、负数、和0。当然整数也可以用float数据类型来储存,只不过有点浪费。

如果我们写脚本的时候直接赋值 a = 1,那么系统会自动将变量a设置为int类型,如果需要让系统自动将a设置为float,则可以写成 a = 1.0 或者 a = 1f。
同理,如果让系统计算 a = 3 / 5,系统会认为3和5都是int类型,于是结果会 = 0。除非写成 a = 3f / 5f, 系统才会算出 = 0.6 。

Float数据的应用范围就很广泛了,距离、时间、速度等等。

String

String数据用来表示“字符串”,也就是文字内容。

游戏中要储存一句对话,就需要使用string类型的数据;获取游戏物体的名字,其数据格式也是string。

要注意的是,UI中使用的文字都是string格式的,如果我们希望显示生命值为10,那么需要把10这个float类型的数据先转换成string类型的数据再赋给相应UI组件来使用。

Vector2

Vector2是二维矢量数据,相当于两个float数据组合起来。

很多数据需要成对出现才有意义,比如屏幕坐标、方形的长宽等等,这时候就要用到Vector2。

Vector2数据写法是用,将两个float数据连起来,再用<<>>框起来,比如<<320, 240>>这样。

Vector3

Vector3是三维矢量数据,相当于三个float数据组合起来。

Vector3的使用就很常见了,一个物体在三维空间中的坐标,运动的方向,translate、rotate、scale值,颜色(RGB)等数据都使用Vector3来储存。

Vector3的写法和Vector2一样,只不过多了一个float数据,比如<<2, 4, 6>>

注意:Vector2和Vector3的每一个分量都是float形式的,所以写的时候不需要加“f”。

GameObject

GameObject类型的数据就没有上面这些那么好理解了,我们姑且认为这就是Unity3D中用来表示一个游戏物体的专有数据就好了。

实际上,GameObject与其说是一个“数据”,不如说是一个“对象”。只不过我们还不了解什么叫“对象”,所以姑且当它是个特殊的数据吧。

Array

Array是“数组”,前述的任何一种数据类型,多个数据按顺序组合到一起就是一个“数组”。

比如可以将全班所有人的名字组合成一个string类型数据的Array:names[] = {"name1", "name2", "name3", "name4"},如果需要获取name1,则需要通过names[0]来得到。

所以,一个有4个数据的数组,其编号是0、1、2、3,没有4。

同时,数组只能将同一类型的数据放在一起,不能混搭,混搭就成了对象(object)了。

Enum

Enum是一个“状态”数据。我们可以定义一个Enum,然后指定给它多个状态,比如“吃饭”、“睡觉”、“打豆豆”之类,然后通常这个Enum会被用在一个Switch条件语句中。


PlayMaker中使用变量

pm_variable_new0.png

在PlayMaker的Variable面板中可以新建变量。变量通常仅在该FSM中使用,如果需要在多个FSM中自由调用该变量,需要将其定位为Global Variable。

pm_variable_new1.png

如果需要在Inspector中修改变量,需要勾上“Inspector”选项。

PlayMaker提供多种数据类型给我们使用:

pm_variable_types.png

除了使用前面提到的Unity3D数据类型作为变量类型以外,PM还提供了一些比较特别的变量类型。比如:

PlayMaker中所使用的变量都需要在PlayMaker中提前定义好。而且,由于PlayMaker又是可视化界面,因此对于所用数据的数据类型十分敏感,一个GameOjbect类型的数据是放不进一个Vector3类型的参数中去的。

初学者一般都不是非常清楚每个Action的每个参数都需要哪种类型的数据。所以建议通过在Action的参数选择框中选择New Variable来创建变量,这样就可以得到正确的数据类型了:

上一篇下一篇

猜你喜欢

热点阅读