文章目录

  • 一、前言
  • 二、创建工程
  • 三、导入冰块图片素材
  • 四、创建冰块阵列
  • 五、分辨率适配
  • 六、添加背景图

一、前言

嗨,大家好,我是新发。下班坐地铁的时候,好几次看到其他人在玩消消乐,既然大家都这么喜欢玩,那我就写个Unity制作水果消消乐的教程吧。

我会根据内容点分成好几篇文章来讲,希望对想学Unity的同学有所帮助,创作不易,喜欢的同学欢迎关注、点赞、收藏,文章目录如下:
第一篇:生成冰块阵列
第二篇:随机生成水果
第三篇:水果拖动与交换逻辑
第四篇:使用DOTween插件实现水果的滑动效果
第五篇:水果的消除检测,实现消除效果
第六篇:水果下落与新水果生成
第七篇:水果消除特效
第八篇:游戏得分加分效果
第九篇:使用UGUI显示游戏UI

游戏运行效果如下:

最终的Demo工程已上传到GitHub,感兴趣的同学可以自行下载下来学习。
GitHub地址:https://github.com/linxinfa/UnityXiaoXiaoLeDemo
注:我使用的Unity版本为2020.1.14f1c1


本篇讲冰块阵列的生成,本篇的效果:

二、创建工程

我们要做的是一个2D的水果消消乐游戏,所以直接创建一个2DUnity工程,工程名称叫UnityXiaoXiaoLeDemo

创建成功。

三、导入冰块图片素材

新建一个RawAssets文件夹。

再新建Textures子目录,用于存放图片素材。

把冰块和水果图片素材导入到工程中。

如下:

注意图片类型设置为Sprite (2D and UI)

四、创建冰块阵列

在场景中创建一个空物体(Create Empty),重名名为Play,坐标归零。

同理创建一个空子节点IceSpawner

把冰块图片拖入到IceSpawner子节点中,此时会自动创建一个Sprite Renderer来显示图片。

可以看到场景中显示了冰块了。

我们现在要创建一个9行7列的冰块阵列,先定义一些全局变量,因为要写脚本了,所以先创建一个Scripts文件夹。

创建一个GlobalDef.cs用于定义全局变量。

// GlobalDef.cs
// 定义一些全局变量
public class GlobalDef
{/// <summary>/// 行数/// </summary>public const int ROW_COUNT = 9;/// <summary>/// 列数/// </summary>public const int COLUM_COUNT = 7;  /// <summary>/// 每个格子大小/// </summary>public const float CELL_SIZE = 0.9f;
}

再创建一个脚本:IceSpawner.cs,用于动态生成冰块阵列。

// IceSpawner.csusing UnityEngine;/// <summary>
/// 冰块生成器
/// </summary>
public class IceSpawner : MonoBehaviour
{public GameObject iceObj;void Start(){// 生成冰块整列for (int rowIndex = 0; rowIndex < GlobalDef.ROW_COUNT; ++rowIndex){for (int columIndex = 0; columIndex < GlobalDef.COLUM_COUNT; ++columIndex){// 实例化冰块物体var obj = Instantiate(iceObj);obj.transform.SetParent(iceObj.transform.parent, false);obj.transform.localPosition = new Vector3((columIndex - GlobalDef.COLUM_COUNT / 2f) * GlobalDef.CELL_SIZE + GlobalDef.CELL_SIZE / 2f, (rowIndex - GlobalDef.ROW_COUNT / 2f) * GlobalDef.CELL_SIZE + GlobalDef.CELL_SIZE / 2f, 0);}}iceObj.SetActive(false);}
}

IceSpawner脚本挂到场景中的IceSpawner节点上,并赋值Ice Obj物体。

运行Unity,效果如下:

我们调节一下IceSpawner节点的Scale缩放为0.8,可以看到冰块阵列可以完整在屏幕中显示了。

五、分辨率适配

上面我们看到冰块阵列创建出来后,我们在720*1280分辨率下可以完整显示冰块阵列了,但是在其他分辨率中,则依然可能会出现显示不全的情况,比如在1080*2280分辨率下的显示:

我们要确保在不同分辨率下都能让冰块阵列完整地显示在屏幕中。
创建一个Resolution.cs脚本,用来做分辨率适配。

// Resolution.csusing UnityEngine;/// <summary>
/// 分辨率适配
/// </summary>
public class Resolution : MonoBehaviour
{public float BASE_WIDTH = 720f;public float BASE_HEIGHT = 1280f;private Transform m_tranform;private float baseRatio;private float percentScale;void Start(){m_tranform = transform;SetScale();}void SetScale(){// 根据宽高比进行缩放baseRatio = BASE_WIDTH / BASE_HEIGHT * Screen.height;percentScale = Screen.width / baseRatio;if (percentScale < 1)m_tranform.localScale = new Vector3(m_tranform.localScale.x * percentScale, m_tranform.localScale.y * percentScale, 1);}
}

Resolution脚本挂到Play节点上。

再次运行,可以看到,在不同分辨率下都可以正常显示了。

六、添加背景图

我们加上游戏背景图,导入背景图素材。

显示到场景中。

运行效果如下:

下一篇讲水果的随机生成。
[点击进入下一篇]

【游戏开发实战】使用Unity制作水果消消乐游戏教程(一):生成冰块阵列相关推荐

  1. 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)

    文章目录 一.前言 二.思考问题与解决方案 1.思考问题 2.解决方案 2.1.Unity中如何开启摄像头并对图像进行采样 2.2.图像如何中转给其他客户端 2.3.如何实现清晰度切换 2.4.客户端 ...

  2. 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

    文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...

  3. iOS cocos2d 2游戏开发实战(第3版)---你的第一个游戏!

    2019独角兽企业重金招聘Python工程师标准>>> 随着苹果公司不断地创新与发展,新的iPhone 5.iPad 4以及iPad mini产品相继问世,包括iOS与Xcode在内 ...

  4. 【游戏开发实战】Unity快速搭建体素风格关卡地图(Tile3D | 我的世界 | Voxel | 场景 | 编辑器)

    文章目录 一.前言 二.本文最终效果 三.MAST工具基本操作 1.工具下载:Modular Asset Staging Tool(MAST) 2.导入工具:Import 3.创建场景:Scene 4 ...

  5. 【游戏开发实战】Unity使用ShaderGraph配合粒子系统,制作子弹拖尾特效(Fate/stay night金闪闪的大招效果)

    文章目录 一.前言 二.实现原理 三.ShaderGraph 四.图片素材 五.结束 一.前言 点关注不迷路,持续输出Unity干货文章. 嗨,大家好,我是新发,之前写了一篇文章:<Shader ...

  6. 【游戏开发实战】Unity使用ShaderGraph制作一个Loading水球(能量球 | UI | 2D | 特效 | URP)

    文章目录 一.前言 二.ShaderGraph入门 三.ShaderGraph制作2D Loading水球 1.创建Unlit Shader Graph 2.创建一个圆 3.从下到上填充的效果 4.填 ...

  7. 【游戏开发实战】Unity UGUI制作雷达图/天赋图/属性图/能力图,因为太怕痛就全点了防御力

    文章目录 一.前言 二.最终效果 三.原理 四.具体实现 1.雷达图背景图 2.封装UIPolygon.cs 3.制作预设 4.测试脚本RadarTest.cs 五.运行测试 六.结束语 七.附录:U ...

  8. 【游戏开发实战】Unity老工程师开始搞Laya了,不想看官方文档,那就看我的教程吧(Laya2.12.0版本 | 案例 | 入门 | 教程)

    文章目录 一.前言 二.我做的Laya案例集合工程 三.LayaAir IDE下载 四.Hello World工程 1.新建空项目 2.新建场景:HelloWorld.scene 3.创建一个Labe ...

  9. 【游戏开发实战】Unity粒子在UI界面中的裁切、蒙版、层级问题的解决(ScrollView裁切、Mask蒙版、UI粒子层级关系)

    文章目录 一.前言 二.最终效果 三.使用方法 1.引入插件dll 2.制作粒子特效 3.粒子材质球使用UIAdditive.shader 4.将粒子摆放在UI节点下 5.挂UIParticle组件 ...

  10. 【游戏开发实战】Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞)

    文章目录 一.前言 二.最终效果 三.制作过程 1.导入血管模型 2.血管Shader 3.血管材质球 4.添加碰撞体 5.药水粒子 四.测试效果 五.结束语 一.前言 点关注不迷路,持续输出Unit ...

最新文章

  1. 一口气说出 6 种 @Transactional 注解的失效场景
  2. 人工智能产业政策与行业应用场景-备课资料
  3. WPF触发器之数据触发器(A)
  4. Composer update 问题: Could not authenticate against github.com
  5. pythondjango搭建数据管理平台,使用Django快速搭建简单的数据管理后台
  6. c#之task与thread区别及其使用
  7. 蝗虫算法java代码_蝗虫搜索算法 蝗虫算法:蝗虫优化算法是模拟自然界蝗虫种群捕食行为而提出的一 联合开发网 - pudn.com...
  8. boost库编译安装以及Qt导入
  9. 2017.9.29 谁能赢呢? 思考记录
  10. Python程序设计语言基础05:函数和代码复用
  11. Matlab滤波器设计
  12. C# 线程知识--异步编程模型(APM)
  13. 210页的《pandas官方文档中文版》.pdf
  14. C与C++ 算法笔记中的代码
  15. C#写简单HTML报表
  16. erp系统软件的三层定义
  17. JVM快速入门(下)
  18. java基础:运算符
  19. Reference Counted Smart Pointers
  20. 学习笔记Java小游戏学习笔记

热门文章

  1. json的存储与读取
  2. 安全测试 switchport protected
  3. java使用密文链接数据库_Java基础——数据库连接信息使用密文
  4. DNS解析、智能DNS原理及CDN应用和原理
  5. matlab 拟合曲线 预测,matlab曲线拟合和预测
  6. 浅谈C中的malloc和free “来自bccn C语言论坛”
  7. Windows 10 出现问题但您可以重试 MSA【closed】
  8. QoS mechanisms——LLQ(拥塞管理,低延时队列)
  9. zigbee应用实践
  10. 利用python爬取租房信息网_Python3爬虫实战:以爬取小猪短租租房信息为例