以簡單的方式講述遊戲開發思路,暫時沒有實踐,若有錯誤,歡迎各位大佬指錯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交互有必定的瞭解