
1.4.2 脚本编辑及相关设置
下面对该游戏的所有功能的脚本编辑及相关设置进行介绍,涉及游戏玩法和游戏效果的实现。具体操作步骤如下。
(1)选中工程窗口(Project)下的“Assets”文件夹,在其右侧空白处单击鼠标右键,在弹出的右键菜单中执行“Create->Folder”命令,新建一个文件夹“Scripts”,用于存放该游戏用到的所有脚本。
(2)在“Scripts”文件夹中单击鼠标右键,在弹出的右键菜单中执行“Create->Scripts”命令,新建脚本“PlayerCharacter”,它是实现机器人的行为和属性的脚本。
(3)双击打开PlayerCharacter.cs脚本并进行编辑。首先在Start方法中设置机器人的形象,也就是材质球贴图,以及获得一些必要的引用。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。


(4)对机器人进行贴图后的效果应该是上身为黑色,下身为白底黑斑,如图1-11所示。

图1-11
(5)接下来介绍机器人移动和转向的实现方法,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。


(6)其中,DrawLine 方法用于从摄像机向射线碰撞点绘制一条直线,该直线只有在 Scene场景中才可以显示,在 Game 场景中不会显示,仅在开发游戏时作为参考。Scene 场景中的DrawLine效果如图1-12所示。

图1-12
(7)下面介绍机器人伸缩手臂的方法和持有方块、释放方块的方法。其中,需要用到子物体(两个“手臂”游戏物体)上的触发器来进入事件。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。


(8)回到Unity,选中Player游戏物体,将PlayerCharacter.cs脚本拖动到检视窗口(Inspector)的空白处,也可以在检视窗口(Inspector)中单击“Add Component”按钮,搜索并添加PlayerCharacter.cs脚本。然后将Move Speed设为300,Limit_x设为9,Limit_z设为9,Layer设为Ground,Max Length设为6,Pull Speed设为30,取消勾选“Stretching”复选框,如图1-13所示。

图1-13
(9)在“Script”文件夹中新建脚本“PlayerController.cs”,双击打开并编写脚本。该脚本用于控制机器人的行为,需要将其挂载到游戏物体Player上。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerController.cs。

(10)在“Script”文件夹中新建脚本“CameraFollow.cs”,将其挂载到Main Camera(主摄像机)上,双击打开并编写脚本,该脚本用于处理摄像机跟随逻辑。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\CameraFollow.cs。


(11)回到Unity,将Camera Follow(Script)的Height设为12,Distance设为6,如图1-14所示。

图1-14
(12)至此,角色系统的所有功能的脚本及相关设置已经介绍完毕,接下来介绍方块与灯柱系统,该系统需要实现一个颜色管理器,用于统一管理所有的颜色。在“Script”文件夹中新建脚本“ColorManage.cs”。该脚本不继承 MonoBehaviour,也不需要将其挂载到游戏物体上。双击打开并编写脚本,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\ColorManage.cs。

(13)在“Script”文件夹中新建脚本“Lampstandard.cs”,双击打开并编写脚本,控制灯柱的材质颜色。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Lampstandard.cs。


(14)回到Unity,将Lampstandard.cs脚本分别挂载到四个灯柱上,并分别设置参数“Para”的值,并且分别对应四个灯柱的颜色。如图1-15所示为红色灯柱的Lampstandard(Script)参数设置。

图1-15
(15)在“Script”文件夹中新建脚本“LightManage.cs”,将其挂载到四个灯柱的父物体LightManage上,双击打开并编写脚本。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\LightManage.cs。


(16)回到Unity,将之前创建好的“AgainButton”按钮拖动到Light Manage的Again Button属性上并进行赋值。Light Manage(Script)的参值设置如图1-16所示。

图1-16
(17)在“Script”文件夹中新建脚本“Box.cs”,将其挂载到四个方块上,双击打开并编写脚本。该脚本能够控制方块的行为逻辑和颜色设置,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Box.cs。


(18)回到Unity,分别设置四个方块的参数Para的值,以及Move Speed与Rotate Speed的值。如图1-17所示为红色方块的Box(Script)参数设置。

图1-17
(19)在“Script”文件夹中新建脚本“ButtonEvent.cs”,将其挂载到“AgainButton”按钮上,双击打开并编写脚本。该脚本声明了“AgainButton”按钮的单击触发方法,内容是重新加载当前场景。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\ButtonEvent.cs。

(20)回到Unity,选中“AgainButton”按钮,在检视窗口(Inspector)下Button组件的On Click ()下单击第二行的小圆点,选中“EventSystem”。再在第一行右边的下拉菜单选择“ButtonEvent.Again”,如图1-18所示。
(21)至此,《拉方块》游戏的制作过程介绍完毕。单击 Unity 上方的“播放”按钮运行游戏,可以查看游戏的运行效果。

图1-18