一、生命游戏简介
生命游戏(Game of Life)是由约翰·何顿·康威(John Horton Conway)设计的计算机程序。它按照一定的规律逐代演化,模拟了生命的出生、繁衍和消亡过程。根据初始结构的不同,在演化过程中有时能呈现出一定规律性,有时则显得杂乱无章。
生命游戏中较复杂的演化模式“播种机”
是不是很美妙呢?其实,生命游戏的原理很简单。它用一张二维网格来模拟二维世界,网格中的格子就代表“细胞”,每个细胞只有两种状态:存活或死亡。每隔一段时间,细胞将迭代一轮,下一轮的细胞状态由上一轮该细胞周围的细胞状态决定。决定细胞状态的规则是:
·当前细胞为存活状态时,当周围的存活细胞低于2个时(不包含2个),该细胞变成死亡状态。(模拟生命数量稀少)
·当前细胞为存活状态时,当周围有2个或3个存活细胞时,该细胞保持原样。
·当前细胞为存活状态时,当周围有超过3个存活细胞时,该细胞变成死亡状态。(模拟生命数量过多)
·当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态。(模拟繁殖)
这些规则清晰明了,非常适合用程序语言来描述,即使是C#初学者也能理解和运用。下面,就让我们一起来做个生命游戏,亲身体验它的奇妙变化吧!
(笔者使用的Unity版本是Unity2021.3)
二、设计思路
在动手制作之前,我们首先要设计游戏框架,也就是我们如何才能实现想要达到的游戏效果。我将它拆解为以下步骤:
  1. 制作UI,包括游戏标题和互动按钮,等等。
  2. 画出网格背景。
  3. 实现鼠标点击格子改变格子状态,并获得被点击格子以及该格子周边格子的信息。
  4. 点击按钮,开始应用生命游戏规则,同时禁用鼠标点击格子。
  5. 结束/重启游戏。
三、UI制作
  1. 打开Unity,在Hierarchy窗口中右键单击>UI>Panel,新建一个Panel作为标题栏,放在窗口上部,重命名为Title,具体参数可根据自己的需要调整。
  2. 在Title下右键单击>UI>Text-TextMeshPro,新建Text,在Text Input栏中输入标题“生命游戏”,并调整字体、字号、颜色等属性。
  3. 在同一张画布(Canvas)下右键单击>UI>Button,新建一个按钮,重命名为“Start Button”,放在窗口右下角。在Start Button的子物体Text(TMP)中,在Text Input栏中输入按钮文字“开始”。
  4. 复制一个Start Button,重命名为“Clear Button”,放在Start Button的下方,在其子物体Text(TMP)的Text Input栏中输入按钮文字“清除”。
  5. 调整Canvas中Canvas Scaler的属性,使之可以按照屏幕尺寸缩放。如图:
完成的UI示例:
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐