![游戏设计与开发:Unity实战完全自学教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/6/43738006/b_43738006.jpg)
1.4.2 脚本编辑及相关设置
下面对该游戏的所有功能的脚本编辑及相关设置进行介绍,涉及游戏玩法和游戏效果的实现。具体操作步骤如下。
(1)选中工程窗口(Project)下的“Assets”文件夹,在其右侧空白处单击鼠标右键,在弹出的右键菜单中执行“Create->Folder”命令,新建一个文件夹“Scripts”,用于存放该游戏用到的所有脚本。
(2)在“Scripts”文件夹中单击鼠标右键,在弹出的右键菜单中执行“Create->Scripts”命令,新建脚本“PlayerCharacter”,它是实现机器人的行为和属性的脚本。
(3)双击打开PlayerCharacter.cs脚本并进行编辑。首先在Start方法中设置机器人的形象,也就是材质球贴图,以及获得一些必要的引用。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_20_2.jpg?sign=1739594016-zzhx99rdl1Qxdxw5D9LCWTespmujzewt-0-6a76a92c632c8270a56162258be54c42)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_1.jpg?sign=1739594016-9pXmNMtiRyESUU7O9Z7SykCAPqT6hsGi-0-cb669232e88ecdc64638571ad478bb5f)
(4)对机器人进行贴图后的效果应该是上身为黑色,下身为白底黑斑,如图1-11所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_2.jpg?sign=1739594016-9YuBzOU7d7a5BaYV9lKdN4tLRLJNHguI-0-be44b59566504c992e3ab6a618160de0)
图1-11
(5)接下来介绍机器人移动和转向的实现方法,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_3.jpg?sign=1739594016-jEIoj8KPMysuL97QJG4hMSzbSB8zlSNl-0-c9e0fd8d5ab20ab4d821e81f051c8e3e)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_1.jpg?sign=1739594016-pZhzBRRvM5vdl6MPeQOOBV2EQORHgRpu-0-38cfeb62eadd7f3ab09b5cdfd0c19a6b)
(6)其中,DrawLine 方法用于从摄像机向射线碰撞点绘制一条直线,该直线只有在 Scene场景中才可以显示,在 Game 场景中不会显示,仅在开发游戏时作为参考。Scene 场景中的DrawLine效果如图1-12所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_2.jpg?sign=1739594016-hOedqGd0VIAaNRWOpAksg7As5nZriQJd-0-33ebda61ff44ba99947a6375f9961b6f)
图1-12
(7)下面介绍机器人伸缩手臂的方法和持有方块、释放方块的方法。其中,需要用到子物体(两个“手臂”游戏物体)上的触发器来进入事件。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_3.jpg?sign=1739594016-7ypsTuuSusS72FEl7kZ0tIHuVe2P4a5k-0-82729edeeb44f68c25d9e70d9a623d37)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_23_1.jpg?sign=1739594016-8E216hGFNx5zYG03OE0Hb6woMdrSwlGd-0-803250b6eebbdd0a32a7b60ea27448d9)
(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所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_24_1.jpg?sign=1739594016-cQEWnYRUT1g9TZxRTxLVwuCq6qc6tIYj-0-7c1799785d0b6165dfc8e4681a5e50a4)
图1-13
(9)在“Script”文件夹中新建脚本“PlayerController.cs”,双击打开并编写脚本。该脚本用于控制机器人的行为,需要将其挂载到游戏物体Player上。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerController.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_24_2.jpg?sign=1739594016-AiI5QTqETYjNFd3OGRjCHQi82I9u4GKE-0-649b3c84d1f17fabc650d44f260ed032)
(10)在“Script”文件夹中新建脚本“CameraFollow.cs”,将其挂载到Main Camera(主摄像机)上,双击打开并编写脚本,该脚本用于处理摄像机跟随逻辑。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\CameraFollow.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_24_3.jpg?sign=1739594016-vpEoLcGSASHixJ7UYeC8dGgg61bf28Od-0-8df494b597395f75064244d280510a0b)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_1.jpg?sign=1739594016-rUQ2uZpfqfZcFjOKfZSLpFdRUI5JwF7Z-0-721ffd2a2beb1f4702ed8556a6121b67)
(11)回到Unity,将Camera Follow(Script)的Height设为12,Distance设为6,如图1-14所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_2.jpg?sign=1739594016-Ajvyuh19dz1gqy1mWj7n5f69n47uiopW-0-338b52fdff2f4456f5837264e369ffd6)
图1-14
(12)至此,角色系统的所有功能的脚本及相关设置已经介绍完毕,接下来介绍方块与灯柱系统,该系统需要实现一个颜色管理器,用于统一管理所有的颜色。在“Script”文件夹中新建脚本“ColorManage.cs”。该脚本不继承 MonoBehaviour,也不需要将其挂载到游戏物体上。双击打开并编写脚本,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\ColorManage.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_3.jpg?sign=1739594016-UZ816SAhMJsdVT7CuNLKtfqLxyQUoiBb-0-872ed8546c22bd1a89e52d8da7473dd4)
(13)在“Script”文件夹中新建脚本“Lampstandard.cs”,双击打开并编写脚本,控制灯柱的材质颜色。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Lampstandard.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_4.jpg?sign=1739594016-qsUT8b6QxsOgOeAUAJUsGBsgWkpXSJyK-0-598ddee3593697761e3a1cadbd453a8e)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_1.jpg?sign=1739594016-lfz6Ut4Q4jn9MzufimegJ32lh5LRGlzM-0-fe81a1aaa9ce43af2b2b24e7fec7229a)
(14)回到Unity,将Lampstandard.cs脚本分别挂载到四个灯柱上,并分别设置参数“Para”的值,并且分别对应四个灯柱的颜色。如图1-15所示为红色灯柱的Lampstandard(Script)参数设置。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_2.jpg?sign=1739594016-g2XO3bqR1llrWCHjkByN24nZM5nEn0kH-0-f4a4113b62f9beba4bb00503b9927387)
图1-15
(15)在“Script”文件夹中新建脚本“LightManage.cs”,将其挂载到四个灯柱的父物体LightManage上,双击打开并编写脚本。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\LightManage.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_3.jpg?sign=1739594016-dEqKMxSt0S8rISlrsK60LQ52pj0KoumE-0-6058c620f59f8fe5228cc4fcd2c1b46f)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_1.jpg?sign=1739594016-uph25XSHDTO80zyVMACxqwgbHdYMslzv-0-9a659125871dddfcca76eaed2c4aea46)
(16)回到Unity,将之前创建好的“AgainButton”按钮拖动到Light Manage的Again Button属性上并进行赋值。Light Manage(Script)的参值设置如图1-16所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_2.jpg?sign=1739594016-wthjAsSRzXI4dUZa6PeNPjsH0Jar01DA-0-8ca488921c508e7fd1e4de23caadfead)
图1-16
(17)在“Script”文件夹中新建脚本“Box.cs”,将其挂载到四个方块上,双击打开并编写脚本。该脚本能够控制方块的行为逻辑和颜色设置,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Box.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_3.jpg?sign=1739594016-KVUYNt57DTOEast4aA2FZZF6YD8yvzaF-0-d166c755332f83c97e062be1401f5933)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_28_1.jpg?sign=1739594016-pzAc7BY3axB2UitucZivbk4Rv9fBO7En-0-747d603eeba2a0adb856ad689c6b0073)
(18)回到Unity,分别设置四个方块的参数Para的值,以及Move Speed与Rotate Speed的值。如图1-17所示为红色方块的Box(Script)参数设置。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_28_2.jpg?sign=1739594016-NezabppORrTPzPcltcBOOaAMmguelZLY-0-2db574ccc0dac44c3c76710a004166b0)
图1-17
(19)在“Script”文件夹中新建脚本“ButtonEvent.cs”,将其挂载到“AgainButton”按钮上,双击打开并编写脚本。该脚本声明了“AgainButton”按钮的单击触发方法,内容是重新加载当前场景。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\ButtonEvent.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_28_3.jpg?sign=1739594016-Uy71QjV5pvoa1xUvor8omtFUQkIcKpIo-0-0cb6bf4a5075b797b832db5374f2a695)
(20)回到Unity,选中“AgainButton”按钮,在检视窗口(Inspector)下Button组件的On Click ()下单击第二行的小圆点,选中“EventSystem”。再在第一行右边的下拉菜单选择“ButtonEvent.Again”,如图1-18所示。
(21)至此,《拉方块》游戏的制作过程介绍完毕。单击 Unity 上方的“播放”按钮运行游戏,可以查看游戏的运行效果。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_29_1.jpg?sign=1739594016-YSYXgMSq3ymJVTg5qBoe9kPiu759NwKK-0-45f5aa9d0b8d30a5c9c6856187a8b889)
图1-18