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] CDH报错:cloudera-scm-server dead but pid file exists
参考 https://blog.csdn.net/levy_cui/article/details/51243335
- 网络协议 SNMP- Windows10无简单SNMP协议服务器配置
原因:Windwos10 1809后更新版本,无启动SNMP协议服务器可选配置项. 解决: 1.打开设置中的[开发人员模式],设置->更新与安全->开发者选项->开发人员模式 2.添 ...
- CentOS 7系统中的时间日期设置
修改 CentOS 7系统中的时间日期设置 timedatectl set-ntp no timedatectl timedatectl set-time 2022-06-04 timedatectl ...
- DLL重定向处理
说明 目前正在做的项目批次功能涉及第三方插件,而第三方插件需依赖4.* 版本的Newtonsoft.Json.dll,由于现有功能已经使用6.*版本的Newtonsoft.Json.dll,故采用了d ...
- CSS(1)基础语法、常见属性
CSS CSS:层叠样式表.主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等).图片的外形(宽高.边框样式.边距等)以及版面的布局等外观显示样式. CSS语法:CSS实例由选择器,以及一条 ...
- Java中单列集合List排序的真实应用场景
一.需求描述 最近产品应客户要求提出了一个新的需求,有一个列表查询需要按照其中的多列进行排序. 二.需求分析 由于数据总量不多,可以全部查询出来,因此我就考虑使用集合工具类Collections.so ...
- Navigation 在fragment之间用bundel传递数据
使用 Bundle 对象在目的地之间传递参数 如果您不使用 Gradle,仍然可以使用 Bundle 对象在目的地之间传递参数.创建 Bundle 对象并使用 navigate() 将它传递给目的地, ...
- Win10 安装 Python3 (上)
Python3 For Windows 10 installer 参考 The full installer 安装 随后可以看到,installer 在用户环境变量PATH中,添加了三项: 卸载 使用 ...
- GO语言面向对象08---投胎游戏
package main import ( "fmt" "math/rand" "os" "time" ) /* @内存 ...
- AIFramework基本概念整理
AIFramework基本概念整理 本文介绍: 对天元 MegEngine 框架中的 Tensor, Operator, GradManager 等基本概念有一定的了解: 对深度学习中的前向传播.反向 ...