Unity 消消乐开发思路
以简单的方式讲述游戏开发思路,暂时没有实践,如有错误,欢迎各位大佬指错
关卡数据保存方式
数据保存我选用json,可读性强,解析快
消消乐物体处理方式
消消乐物体我将以预制体的方式使用(把物品拖到Asset文件夹即为预制体)
游戏每一关初始化
初始化要做的事情:
把关卡或计时等信息与UI对象相关联
通过Json数据以及Asset存的预制体实例化初始消消乐地图
玩家游戏中点击屏幕响应
判断点击是否为一个可被消除物品
method: 可通过Physics2D.OverlapPointAll判断点击是否包含碰撞体数组,因为返回的是碰撞体数组,所以物品身上必须加上一个碰撞体(额,为此如果数量多了可能影响游戏性能)如果还不明白的话可以看我的这篇文章2d点击获取物体如果点击物品可被消除,则递归检查该物品周围是否有相同物品,
如果有相同的物品即可消除,否则返回null
点击屏幕后
如果有物体被删除则利用递归判断哪里下面的物体被删除,
然后根据情况往下移动格子,注意每次移动都要递归来判断,哪里可以继续移动格子
移动完成后返回一个bool值true,接着继续在消消乐地图上方生成物体,然后移动到指定空格子中,这里要用遍历,对地图内所有物体进行检查,空的就是要生成并移动到的位置
在这里给大家推荐一个插件,叫DOTween,他可以对物体进行移动,旋转,缩放,渐变等,非常方便,在使用的时候只需要引入
DG.Tweening命名空间即可使用
另外还有一个DOTween Pro我就不给大家介绍了,它就是在DOTween 的基础上增加了在编辑器中编辑动画组件,而不是在代码中修改,这也是为了技美着想吧!当然如果你不想看DOTween文档,想快速了解,也可以看我的这篇文章关于DOTween的使用
游戏一些细节效果
当物体可以被摧毁那么把可摧毁物体聚集到屏幕中间旋转,随之往四面八方移动渐隐
玩家每次点击屏幕不管点到哪里都会在点击位置生成粒子特效
每次点击都会播放音效
example:
这是一个用于播放音效的单例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#region 佛祖保佑
/*
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永无BUG
*/
#endregion
public class SoundManager : MonoBehaviour
{
public static SoundManager Instance;
public string[] String_soundsField;
public AudioClip[] AudioClip_soundsField;
private AudioSource audioSource;
private Dictionary<string, AudioClip> Dictionary_sounds = new Dictionary<string, AudioClip>();
// Start is called before the first frame update
void Start()
{
if (!Instance) Instance = this;
DontDestroyOnLoad(transform);
audioSource = transform.GetChild(0).GetComponent<AudioSource>();
SoundsSetUp();
}
private void SoundsSetUp()
{
Dictionary_sounds.Clear();
for (int i = 0; i < String_soundsField.Length; i++)
{
Dictionary_sounds.Add(String_soundsField[i], AudioClip_soundsField[i]);
}
}
public void PLaySound(string soundField)
{
if (Dictionary_sounds.ContainsKey(soundField))
audioSource.PlayOneShot(Dictionary_sounds[soundField]);
}
}
使用时只需在外部调用
SoundManager.Instance.PlaySound("AudioClipName");
在一个游戏管理类中设定一个整数Score,以及每一关Score线,当超过分数线比如及格,优秀,满分,就会播放不同的音效,或接着生成烟花粒子,并且同时在屏幕中心生成一个五角星,然后快速移动到屏幕上方设定的每一关星星数量那里,如果按及格优秀,满分来分 分数线那么星星满星为三颗
因为游戏内基本都是用的热更新,不过我今天再介绍一个游戏内部更新的方式,需要你对Android交互有一定的了解
Unity 消消乐开发思路的更多相关文章
- Unity 3D游戏-消消乐(三消类)教程和源码
Unity 消消乐教程和源码 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Start Game -- ...
- 消消乐、candy crush类三消游戏程序逻辑分析
最近在开发一款类似消消乐的三消游戏,在碰到实现斜方向下落的时候卡住了很长时间.好几天没有思路,原本的思路是一次性预判多个宝石的一连串运动路径,运用缓动运动队列来实现宝石运动路径,例如 下落->滑 ...
- net.sz.framework 框架 ORM 消消乐超过亿条数据排行榜分析 天王盖地虎
序言 天王盖地虎, 老婆马上生孩子了,在家待产,老婆喜欢玩消消乐类似的休闲游戏,闲置状态,无聊的分析一下消消乐游戏的一些技术问题: 由于我主要是服务器研发,客户端属于半吊子,所以就分析一下消消乐排行榜 ...
- ACM_开心消消乐
开心消消乐 Time Limit: 2000/1000ms (Java/Others) Problem Description: 大白最近喜欢上了开心消消乐,于是英语基础好的他准备让课文中英语句子也来 ...
- Unity3D_(游戏)甜品消消乐03_游戏UI设计
甜品消消乐01_游戏基础界面 传送门 甜品消消乐02_游戏核心算法 传送门 甜品消消乐03_游戏UI设计 传送门 (源码在文章最下面~) 实现过程 游戏界面UI 分数与时间的UI显示 有关游戏U ...
- Unity3D_(游戏)甜品消消乐01_游戏基础界面
甜品消消乐游戏 (脚本源码在游戏UI设计最下方) 三消游戏,存在L型消除有一点小Bug,当甜品在饼干附近消除时会清除饼干 饼干作为游戏障碍物时不可移动的,多块饼干并排时会挡住甜品掉落 发现消除类游戏的 ...
- [LeetCode] Candy Crush 糖果消消乐
This question is about implementing a basic elimination algorithm for Candy Crush. Given a 2D intege ...
- RSP小组——消消乐
RSP小组--消消乐 团队所有博客总结 1.团队第一周作业 2.团队第二周作业 3.RSP小组--团队冲刺博客一 4.RSP小组--团队冲刺博客二 5.RSP小组--团队冲刺博客三 6.RSP小组-- ...
- PHP实现开心消消乐的算法示例
本文主要介绍了关于PHP如何实现我们大家都知道的开心消消乐的算法,分享PHP教程出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.需求描述: 1.在一个8*8的矩阵方格中随机 ...
随机推荐
- [bug] java.sql.SQLException: Unknown initial character set index '255' received from server. Initial cl...
参考 https://www.jianshu.com/p/d86de6463cbd
- Linux_配置匿名访问FTP服务
[RHEL8]-FTPserver:[Centos7]-FTPclient !!!测试环境我们首关闭防火墙和selinux(FTPserver和FTPclient都需要) [root@localhos ...
- Hutool :一个小而全的 Java 工具类库
Hutool 简介 Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的 ...
- 1.4linux文件和目录常用命令
文件和目录常用命令 目标 查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 ...
- 阿里云AIoT云端一体:迎接云原生+低代码时代的到来
距上次2019年参加上海阿里云开发者大会已经近2年的时间了,也许因为疫情的原因,这一两年线下大型活动基本很少了,这次在北京国家会议中心举办的阿里云开发者大会,无论是参会人员的规模,还有演讲嘉宾的级别和 ...
- 域名更换为itwxe.com
域名 uukongjian.com 更换为 itwxe.com,笔名 SunnyBear 更改为 IT王小二. 一.前言 4 月 21 号域名备案通过,开始折腾新买的服务器,本来这篇文章在 5 月 1 ...
- celery异步任务体系笔记
1.异步框架示意图 2.celery 官方文档 http://docs.celeryproject.org/en/latest/index.html 3.启动celery的命令 启动 sender 自 ...
- 将TVM集成到PyTorch
将TVM集成到PyTorch 随着TVM不断展示出对深度学习执行效率的改进,很明显PyTorch将从直接利用编译器堆栈中受益.PyTorch的主要宗旨是提供无缝且强大的集成,而这不会妨碍用户.PyTo ...
- OFRecord 数据集加载
OFRecord 数据集加载 在数据输入一文中知道了使用 DataLoader 及相关算子加载数据,往往效率更高,并且学习了如何使用 DataLoader 及相关算子. 在 OFrecord 数据格式 ...
- CUDA C 纹理提取Texture Fetching
CUDA C 纹理提取Texture Fetching 一.参数曲面的纹理 使用纹理指定参数曲面属性. 二.CUDA C 纹理获取开发 用于计算纹理函数,根据纹理引用的各种属性返回的值的公式(请参见 ...