游戏引擎:Unity3D - 5.4.1 脚本编辑器:Visual Studio 2012 脚本语言:C# 【随便聊聊】 已经很久没写博客了。因为感觉一直没有太好的东西分享给大家,最近写了比较完整的小例子,这里分享给大家。 【这里是正文】 一. 策划部分 游戏说明: 游戏两两翻牌,一样则记成功一对;不一样,则两张都恢复初始状态。当所有卡牌配对成功后即获得胜利。 游戏流程: 1、玩家点击开始游戏后进入游戏; 2、系统初始化一组卡牌显示到界面上; 3、系统计时; 4、玩家点击卡牌将卡牌翻开; 5、系统检测到当翻开的卡牌为两张时进行评判,若相同则增加计数并判断是否达到指定数量,若不同则两张卡牌均恢复为原始状态。 具体规则: 1、需在规定时间内完成游戏,否则系统提示游戏失败; 2、当有两张卡牌被翻开时,需等待2秒后才能对其他卡牌进行点击,在2秒内对其他卡牌的点击都是无效的。 基于以上的流程和规则,我们罗列出以下主要技术点(其中括号中均为简写): 1、搭建界面,卡牌池使用自动布局(Grid Layout Group和Content Size Fitter组件); 2、构建GameManager类; 3、构建Card类; 4、配置卡牌列表,随机排列卡牌(List,Random.Range); 5、生成卡牌作为卡牌子物体(Local相关属性配置) 6、设置计时器(Time.deltaTime); 7、翻牌添加到数组(List); 8、两张翻牌时,使玩家点击失效2秒(协同程序)。 9、配对成功不可再点击(Button interactable=false) 二. 开发部分 搭建界面: 我们创建工程,在场景中创建Panel,为其添加Gird Layout Group组件和Content Size Fitter组件。Gird Layout Group组件可对Panel的子元素进行排列布局,我们这里要用到的是Padding下面的四个属性(元素距离四边的像素距离)、Cell Size(元素的宽高像素)、Spacing(元素间横向与纵向间隔)以及Constraint(行列约束)。Content Size Fitter组件用来约束当前Panel的尺寸。这两个组件一般搭配使用。 我们进行如图设置。 我们指定了子元素的大小和间距,以及与父元素边界距离,并指定以列为基准一共四列;最后设置横纵的尺寸都按照最小来自适应,就会按照我们之前的设置来自动布置当前Panel的大小。此时可以做个测试,在Panel下疯狂创建Image(也不用特别疯狂,创建一个Image后选中它ctrl+d就行。。。)创建十二个Image,发现会自动布局成我们想要的效果。