![游戏设计与开发: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=1739595163-dAXFz16l2bdOELd7BheYlSQNIafRWy0f-0-c2363462fa4108be9df8d1b041e40188)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_1.jpg?sign=1739595163-9HhP1NmFIL7WXuGpM9tnu8pYGMRRAbX2-0-2d4694b44420918e699c3e83ef0bbbb4)
(4)对机器人进行贴图后的效果应该是上身为黑色,下身为白底黑斑,如图1-11所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_2.jpg?sign=1739595163-RgrZGXlrN664dCSVXn7mBcZgszd3bbPN-0-24ea3e33985740cb9c47de8fc242e8a2)
图1-11
(5)接下来介绍机器人移动和转向的实现方法,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_3.jpg?sign=1739595163-DoBohL8ZruFzk8bNHdXgKdQH3uIUAwis-0-fbe89ed06fe2bb442c2bcba9f23d529b)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_1.jpg?sign=1739595163-GarUXyc4EsGrFNrcqBN7LqvHJ4HCyHGH-0-df76775e8e7abce7b573ad7458bd0629)
(6)其中,DrawLine 方法用于从摄像机向射线碰撞点绘制一条直线,该直线只有在 Scene场景中才可以显示,在 Game 场景中不会显示,仅在开发游戏时作为参考。Scene 场景中的DrawLine效果如图1-12所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_2.jpg?sign=1739595163-VVcPRIdEcokwNRrZl3KeydKq0a3ZTows-0-e0e25b20621d50254260508de002e9a8)
图1-12
(7)下面介绍机器人伸缩手臂的方法和持有方块、释放方块的方法。其中,需要用到子物体(两个“手臂”游戏物体)上的触发器来进入事件。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_3.jpg?sign=1739595163-OUKadI2pJFhYdjk2LLXNpmygItfCPtjs-0-e6bb19d32e79bdfd5e4b695d3fc0c4b1)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_23_1.jpg?sign=1739595163-HrjmwdQ1NCWWBuUttzSedjmybWGZGhK9-0-ec140321a43c7a941ea37370570b3d71)
(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=1739595163-jTQvMDNaJk6ZaT8hTOn05HrL0u3l2mWI-0-72f0989f3cbeb36125157aae1aa6e4b0)
图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=1739595163-SH0q67Tb2TBs1VdsnYJpmJpHA8yf23DR-0-466010b14d790f54d3075dcd5cf0b170)
(10)在“Script”文件夹中新建脚本“CameraFollow.cs”,将其挂载到Main Camera(主摄像机)上,双击打开并编写脚本,该脚本用于处理摄像机跟随逻辑。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\CameraFollow.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_24_3.jpg?sign=1739595163-fc0WTusMcKwHlX1YxbZaa7dmRUI77lrd-0-9d81ab3e560b494a8e51111ae7700921)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_1.jpg?sign=1739595163-CvSnVlDTPAm9RfT2bJbgo9iUJwiMUWM3-0-8c5c236cadb59b96e21700cf2147cfd4)
(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=1739595163-VZg53356uEvmEVEY9ce3rLza4vwf4DXk-0-f47cdd04cd49515f736c8202dab0b23b)
图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=1739595163-WgnzQntsgBLDgHAA8EwInXIglkPXlN46-0-87fe6693704f7f990f51e646c814d4d3)
(13)在“Script”文件夹中新建脚本“Lampstandard.cs”,双击打开并编写脚本,控制灯柱的材质颜色。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Lampstandard.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_4.jpg?sign=1739595163-VB89lg1GF8YyKNLCFuYqv2Ibsx0HN9Wu-0-351c42acca4671f5ba28f6c6af8e1ee6)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_1.jpg?sign=1739595163-z6u10E8zzBUVv2r1n86xfNX2Q1qGAxmZ-0-2493f8a31b8ba5eab2f9f3a9c1a92c48)
(14)回到Unity,将Lampstandard.cs脚本分别挂载到四个灯柱上,并分别设置参数“Para”的值,并且分别对应四个灯柱的颜色。如图1-15所示为红色灯柱的Lampstandard(Script)参数设置。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_2.jpg?sign=1739595163-C0TzNmbopyJyTT2j8L9dNXej7MuDlKus-0-66e62531a2253ba0e2b5f78a6365dcae)
图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=1739595163-Z0KFHoOaOeKGmjoynSanmVlmXdx1up7a-0-89d39984a8e205f8587832968dd71ebd)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_1.jpg?sign=1739595163-KiFNe3ftybSC75616MxbW0nLG2gOauCw-0-8882d5f4eeb18c99de25e9a123b56565)
(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=1739595163-xL9fC9eb2ssmIYD6WkgqB2PQlgjG6sUq-0-6a5563b70f55aeaed5d4c09aa030f753)
图1-16
(17)在“Script”文件夹中新建脚本“Box.cs”,将其挂载到四个方块上,双击打开并编写脚本。该脚本能够控制方块的行为逻辑和颜色设置,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Box.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_3.jpg?sign=1739595163-aNMzI6y9dJHWXB3V0QXjA2hDUfKRDV8J-0-674c54e3f6f4bae737202abfa9f2cc25)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_28_1.jpg?sign=1739595163-l65ri5WHPkY7aWFTFW6B0RTOXxXPdRbj-0-b5d5559090cde228c884cfddef451226)
(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=1739595163-CGCqp3gEcszbjWi2kvHxP2MOoJIAztqK-0-291686caffd2188b1db31a6b5ebcd880)
图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=1739595163-q0SrTxcWl3jQCPgfLAtAOxfC20TjuaHX-0-f9f93cdadcbdc9e71042d653a20e0e32)
(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=1739595163-2q1RyiGRr4IWABfCarK6msbXwJ8xngCn-0-5e0176ec80a37b6fe3e65fff692f54be)
图1-18