![游戏设计与开发: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=1739594402-xRwlt9EHJSrVIGOs7UWSw7aVMjfv0l1L-0-234e96dbf7f2c9c2e0b5821e6db3ce99)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_1.jpg?sign=1739594402-F2VOrqy79UHgTiTErS7IOZ35wiaD0zMU-0-bba12e9db4d2cdf75b2c88b5f4fea589)
(4)对机器人进行贴图后的效果应该是上身为黑色,下身为白底黑斑,如图1-11所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_2.jpg?sign=1739594402-MuvwGWefB3qMz2DQnRreqqNQQ94lBjGp-0-01c4b298875dfdbc4e3b20638390c8f2)
图1-11
(5)接下来介绍机器人移动和转向的实现方法,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_21_3.jpg?sign=1739594402-vV0rfCXpnPWZPOorJAM0MuYAd7vpoC6s-0-256ad0273e78a34a20c9f9baf00ed1ec)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_1.jpg?sign=1739594402-lz5EBmdn0ffq31dIhwrXw40oktwiIfnW-0-2110c02c6d29b5133f4d21aa9f1495e1)
(6)其中,DrawLine 方法用于从摄像机向射线碰撞点绘制一条直线,该直线只有在 Scene场景中才可以显示,在 Game 场景中不会显示,仅在开发游戏时作为参考。Scene 场景中的DrawLine效果如图1-12所示。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_2.jpg?sign=1739594402-bNfxKSVUGCd9fHyyLtn3hvl2XD5H3ZzK-0-879ef59ca1792dbf1235ef6c8d430c65)
图1-12
(7)下面介绍机器人伸缩手臂的方法和持有方块、释放方块的方法。其中,需要用到子物体(两个“手臂”游戏物体)上的触发器来进入事件。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\PlayerCharacter.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_22_3.jpg?sign=1739594402-jtSUeUqoZp9IR3bChmrZ43i0xmgGvvRg-0-b7fd43bda874923ff9ed4e298a242ca3)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_23_1.jpg?sign=1739594402-MZ805nixWKQcwnn1hXdxDkxK3MZ1lEh3-0-0a46514c755c378ba7098334b4613444)
(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=1739594402-8fgkk7HKiDC8vRKcEsJb9wCf8J4fVdAJ-0-bad0942c4af8e203621157c655656c71)
图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=1739594402-1XU2Nk3zgqZHYNefyPIziAVDn7QKnoB6-0-cd570a8c9df17361752278bb46e537a3)
(10)在“Script”文件夹中新建脚本“CameraFollow.cs”,将其挂载到Main Camera(主摄像机)上,双击打开并编写脚本,该脚本用于处理摄像机跟随逻辑。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\CameraFollow.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_24_3.jpg?sign=1739594402-Qjdf2OHQ8voCWEetnWM849T9VE2Ws3Dy-0-e37cd745ab6588f631d5f9bdc9dcc106)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_1.jpg?sign=1739594402-rvsLD6PKnCaapL6FXNQi4fXR89arTKGb-0-c0e92b40b6329e5243945019b0237c1b)
(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=1739594402-xdFE9ul3vYgh84v8TGkPeHNRzRwmQ3Mg-0-dc728c8a42e951418ace445d1ecec693)
图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=1739594402-5yfek2nSg55fHYlSTiHKvXt29MG3vhn5-0-e76ec33b2cccf3a02c28c50f3f7b74ae)
(13)在“Script”文件夹中新建脚本“Lampstandard.cs”,双击打开并编写脚本,控制灯柱的材质颜色。脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Lampstandard.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_25_4.jpg?sign=1739594402-bZUtndxye2qQXdGbysR7k97mbzQsPSa8-0-10503332ca0e55243166587ae3533443)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_1.jpg?sign=1739594402-o3YkvNyyQX0bjJgDA1m1BQnaxT85Nvu1-0-08847c991e1ad629c7861eeb1a58facf)
(14)回到Unity,将Lampstandard.cs脚本分别挂载到四个灯柱上,并分别设置参数“Para”的值,并且分别对应四个灯柱的颜色。如图1-15所示为红色灯柱的Lampstandard(Script)参数设置。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_26_2.jpg?sign=1739594402-GV78VYyXnzLTcmEANtNWulC3LkpdHVoF-0-936a03462039d19b553c9a7b489914bd)
图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=1739594402-4Lcwl5dEUsk3npDHPVp9aQ232czWgtNT-0-c3f5093ecd7e69c67aff20f7cb087fab)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_1.jpg?sign=1739594402-h3GWXXORGAUg5caOq7mEktn4mk5EwULu-0-1441a2fd94d456bcbad4f58684230283)
(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=1739594402-RDQTcPZ3VMkFNF9wNoZsDYGzEp0y90LP-0-29455e59fb06f79334b89b48f22ed706)
图1-16
(17)在“Script”文件夹中新建脚本“Box.cs”,将其挂载到四个方块上,双击打开并编写脚本。该脚本能够控制方块的行为逻辑和颜色设置,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\Box.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_27_3.jpg?sign=1739594402-mDusrWV5mHWzSYGFuJIoAqd6snalMBDJ-0-4d5de0f76f0a48c83a2ff0af091808a7)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_28_1.jpg?sign=1739594402-oSDoGYpiHHSCud3fE7PbnMiMX6nFCtrq-0-0a580a29dc03a64b455d26056a3dfeac)
(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=1739594402-YfqTwMlcY2SuYoIQObib8a7Jp6p7hc6I-0-27e0d049a0eff5c3766d528ffa18ffc3)
图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=1739594402-mlMSqRM7kfaOauJvh48heECOXNTGEbbI-0-73a7932b4e4c987e4cd55cbed86672bc)
(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=1739594402-uZieDyRbitxT5xGBxoLgxwYNTLRQCOlD-0-1ae3d4e59f8b045f13f98659aa10190d)
图1-18