![游戏设计与开发:Unity实战完全自学教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/6/43738006/b_43738006.jpg)
3.4.3 棋盘和糖果的生成设计与实现
前文描述了棋盘和糖果的游戏物体和数据结构设计,下面介绍如何编写相关的脚本。
1.生成棋盘
在游戏场景中铺设预制体 Square,从而在游戏场景中形成一个大棋盘。每个预制体 Square除了起到画面表现方面的作用,还需要接受由鼠标位置发射的射线检测,以确定玩家单击的格子的坐标,所以每个预制体Square的脚本需要存储格子的坐标。新建Square.cs脚本的代码如下。
代码位置:见源代码目录下Assets\Scripts\Square.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_70_3.jpg?sign=1739593552-eEEadGT2OPg2SWrZh8DRWKJynVOWeKUK-0-5a39c20d92dd57a0ae19807cce0820be)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_71_1.jpg?sign=1739593552-Xme5hKGdgspCN2tkjWy4Pc9AziEOJGJD-0-4fc23323193628fec6c922faea0e1ce6)
在游戏管理器脚本GameManager.cs中控制棋盘的生成,并对生成的每个预制体Square标记对应的坐标,具体代码如下。为了使棋盘界限清晰,这里用了两张不同的贴图(见表 3-1)交替生成不同贴图的格子。
代码位置:见源代码目录下Assets\Scripts\GameManager.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_71_2.jpg?sign=1739593552-ocMLQnYURT0JKMNYsB85G0bpuNnzesQV-0-34140099137aeae449d0e7adfd40b762)
2.糖果生成
所有的糖果预制体上都挂载了 CandyControl.cs 脚本,该脚本负责记录糖果的类型和颜色,为了区分糖果的类型,这里声明了一个糖果类型枚举,并声明了一些方法,管理器可以通过调用这些方法修改当前糖果的类型和颜色,脚本代码如下。
代码位置:见源代码目录下Assets\Scripts\CandyControl.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_71_3.jpg?sign=1739593552-9FCRQvGeQM2oHLF36eNHrNUsrRuYwRzt-0-d0da8708e6d6a5962f2460531bad191d)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_72_1.jpg?sign=1739593552-sAilcMWmXBiS8XkWmFQL9KsDjOzVlNLA-0-2f825e9327697005e346881555aec64d)
在游戏管理器脚本GameManager.cs中编写控制生成糖果的具体操作方法“CreateCandy”的步骤是:根据输入的参数生成糖果预制体,并调用糖果预制体上的初始化方法对糖果的贴图和内部数据进行初始化。由于在其他地方也需要根据糖果类型和糖果颜色获取对应的贴图精灵的方法,所以可以将这部分功能提取出来单独作为一个方法“GetCandyTexture”。具体代码如下。
代码位置:见源代码目录下Assets\Scripts\GameManager.cs。
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_72_2.jpg?sign=1739593552-8fGVOwjPKOHBBPLa3RL4owHpmDg2DwqR-0-c975dfd6033496aa304634e88d33ed11)
![](https://epubservercos.yuewen.com/9A2E4E/23020637701641706/epubprivate/OEBPS/Images/42155_73_1.jpg?sign=1739593552-cprxTxQ0uTejSpPJInASUNmCUsCVTRCM-0-23a9e771909c3d4be1606e432bd42b0b)
至此,游戏中的棋盘和糖果的生成设计与实现介绍完毕,以上是游戏的准备阶段,只有将游戏所需要的材料都准备好,才能进行下一步操作。