以简单的方式讲述游戏开发思路,暂时没有实践,若有错误,欢迎各位大佬指错html
数据保存我选用json,可读性强,解析快json
消消乐物体我将以预制体的方式使用(把物品拖到Asset文件夹即为预制体)数组
初始化要作的事情:编辑器
把关卡或计时等信息与UI对象相关联性能
经过Json数据以及Asset存的预制体实例化初始消消乐地图动画
判断点击是否为一个可被消除物品
method: 可经过Physics2D.OverlapPointAll
判断点击是否包含碰撞体数组,由于返回的是碰撞体数组,因此物品身上必须加上一个碰撞体(额,为此若是数量多了可能影响游戏性能)若是还不明白的话能够看个人这篇文章2d点击获取物体this
若是点击物品可被消除,则递归检查该物品周围是否有相同物品,插件
若是有相同的物品便可消除,不然返回nullcode
若是有物体被删除则利用递归判断哪里下面的物体被删除,orm
而后根据状况往下移动格子,注意每次移动都要递归来判断,哪里能够继续移动格子
移动完成后返回一个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交互有必定的了解