![游戏设计与开发: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=1738895027-3hlh5cO7gECmCFAdipa6e7pzBsdIYdX6-0-da1d043b266b5210b1dff64689a8d2b3)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_1.jpg?sign=1738895027-zCFpLOWNP6wAmfC9lAt7rc4E1GBZonS7-0-e75f55f1c98bfd31d16caec3ac4d99c6)
(4)对机器人进行贴图后的效果应该是上身为黑色,下身为白底黑斑,如图1-11所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_2.jpg?sign=1738895027-nHlhUhbC1oXIF8raQ4fnfjbpIkg7s2L2-0-20ed9367c02326ef153d5f5d58b0ba77)
图1-11
(5)接下来介绍机器人移动和转向的实现方法,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_3.jpg?sign=1738895027-8WM2B75SsXMiAj8TCSsTJ7O4Dz3set9m-0-6d3655eb0b3d58eaeeb376b495c9f809)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_1.jpg?sign=1738895027-IlUE6gcUbinK9lOc899tNttfVIvi16Ob-0-9acb6664235d2cccf98cb0380640dcc8)
(6)其中,DrawLine 方法用于从摄像机向射线碰撞点绘制一条直线,该直线只有在 Scene场景中才可以显示,在 Game 场景中不会显示,仅在开发游戏时作为参考。Scene 场景中的DrawLine效果如图1-12所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_2.jpg?sign=1738895027-NGLPHnjMalkyjoRK7kmUIeyPYM576spp-0-57a78cb4dc1f3d4018f2e7456da8038a)
图1-12
(7)下面介绍机器人伸缩手臂的方法和持有方块、释放方块的方法。其中,需要用到子物体(两个“手臂”游戏物体)上的触发器来进入事件。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_3.jpg?sign=1738895027-oyivPFQyK7byHGITcFB98nvkjAmoHbVc-0-c27e8d7aa2f2377da1647f59342b737e)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_23_1.jpg?sign=1738895027-FpYdnoYZdMkzHeRBmaRYn9Z6veHU7bsn-0-cad730a76e4a2b5d356f54386ff0c856)
(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=1738895027-CIs8M3mTZbhIca6FNCjGjHN7KpmF1pWJ-0-fc47bd6f9af9cd7b81c05abbb118f88d)
图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=1738895027-EdsqYtFMUD5zTSfowvDYbOPMERMC3eDw-0-5ec8ccaccd58b9f45a593ee7fbbf1d52)
(10)在“Script”文件夹中新建脚本“CameraFollow.cs”,将其挂载到Main Camera(主摄像机)上,双击打开并编写脚本,该脚本用于处理摄像机跟随逻辑。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\CameraFollow.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_24_3.jpg?sign=1738895027-ry10rlSGinGd2WkSS1E8lAcSzOmd4Xwo-0-97e62fa448dc0db4606cfac465c05ce1)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_1.jpg?sign=1738895027-2RA1oPlf6npWP23yKmvCqA4LUewc2pQq-0-f3fe29862efa7f788fd030c7d9b5b3d5)
(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=1738895027-XnDyzzn1bpUr0btQqQj5GtjFepydP3UT-0-7d46cdca13650d886977779dad0bfe0b)
图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=1738895027-X3k54B7B74SrfLJdXYHtpJCi6KxNzJwd-0-ba47260aa4c796dc3f0aaf4aaa5a75d2)
(13)在“Script”文件夹中新建脚本“Lampstandard.cs”,双击打开并编写脚本,控制灯柱的材质颜色。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Lampstandard.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_4.jpg?sign=1738895027-OyHPia8LEoPNZtNV6QhM3Do7DAuqif9s-0-fb94e7d9b7946a4695f0953320713dc4)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_1.jpg?sign=1738895027-NKDTK7NZhvZbnLmErDC6Z9u2aErS66DE-0-218d76cc6f8ede4316fad4614f9df63f)
(14)回到Unity,将Lampstandard.cs脚本分别挂载到四个灯柱上,并分别设置参数“Para”的值,并且分别对应四个灯柱的颜色。如图1-15所示为红色灯柱的Lampstandard(Script)参数设置。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_2.jpg?sign=1738895027-O9mmLMkdgiTsfni4VQ5Z5yGP83KW2Goc-0-e2fd9b7fa76bdc56590088dd659f5597)
图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=1738895027-GYqRvfC0jIV96cdKttIa5zUZKw5xAZuM-0-9470a1618d9cb4be1aa058e2df4425d9)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_1.jpg?sign=1738895027-bSiMk7amTuOPCff1BrN9n3xWgqlAEkai-0-283cb1eb2e9580da2aec37e1d26251e0)
(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=1738895027-rUCw6OgV1yDRnaXPFjOYZZkG8htA6Zj0-0-738c53e3c87976a59a34c740cc5386e3)
图1-16
(17)在“Script”文件夹中新建脚本“Box.cs”,将其挂载到四个方块上,双击打开并编写脚本。该脚本能够控制方块的行为逻辑和颜色设置,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Box.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_3.jpg?sign=1738895027-Q5dkiXj38Q6ejWtbLuq6B4EMHWohNPMs-0-758232b7c888a7f0a8d1b62010f613f7)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_28_1.jpg?sign=1738895027-fik6FpvLAovKWmRDm1NEp945Zsjqe5PD-0-57a209f05155e4d2b8819b8ef4910040)
(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=1738895027-UG1vcbA3wS7m2vmHgje51DcwaU9anPY6-0-ace23415c986fb27448476065726f68f)
图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=1738895027-1OTPRY8w2kxH2GskuWk5ifzr5EDGXJNy-0-2a8539e6fd5118be2fbd36852a8ecbb8)
(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=1738895027-OllAEG6siUAFUTZ0NUdyYVCuSD5MdoyW-0-b71ad364afec95ce4972cbc7ac75bdc6)
图1-18