卡牌2D游戲展示
(游戲代碼放到 卡牌04_游戲界面 文章最后面~)
游戲項目已托管到github上(里面有個32bit可執行文件) 傳送門
規則
開始游戲每張卡牌初始翻開展示 展示幾秒后卡牌扣下。
點擊第一個卡牌,翻開、記錄。 點擊第二個卡牌, 如果不匹配,等待1秒后兩個都重置為扣下 如果匹配,則變暗,禁止再次點擊 所有卡牌成功配對
右上角顯示時鍾倒計時 時間結束,游戲失敗
不同主題關卡不同,遠不止15關~

啟動屏 主菜單界面選擇主題,不同主題對應不同圖片素材。點擊后進入選關界面 選關界面 鼠標進入某個具體關卡按鈕上,底下對應顯示這個關卡的描述信息 當關卡很多時,通過滑動屏幕,來切換多頁顯示 游戲界面 隨機生成偶數對圖片。兩兩配對 全部配對成功,游戲結束 核心算法:先后翻開兩張卡牌,判斷兩個卡牌id相同即可 時間計時。剩余時間越多在關卡中標識星星越多(0-3個) 數據結構設計 每個關卡在指定圖片素材中隨機、在全體圖片素材中隨機 記錄的保存 記錄最高的關卡編號。只有通過當前關卡才解鎖下一關卡 每關根據完成比賽時間長短,顯示不同的星級。
卡牌01_啟動屏界面 傳送門
卡牌02_主菜單界面 傳送門
卡牌03_選關界面 傳送門
卡牌04_游戲界面 傳送門
啟動屏界面
5s后start場景跳轉到MainMenu場景
(0.5s閃爍一次!)
點擊start場景(按任意鍵),從start場景跳轉到MainMenu場景

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Scene_Start : MonoBehaviour { float _timer; GameObject anyKeyObj; // Use this for initialization void Start () { _timer = 0; anyKeyObj = GameObject.Find("anykeyTxt"); } // Update is called once per frame void Update () { _timer += Time.deltaTime; if (_timer % 0.5f > 0.25f) { anyKeyObj.SetActive(true); } else { anyKeyObj.SetActive(false); } if (_timer>5||Input.anyKeyDown) { GoToMainMenu(); } } void GoToMainMenu() { SceneManager.LoadScene("MainMenu"); } }
實現過程
創建四個場景,並保存到工程項目中
創建游戲屏幕分辨率
Canvas的分辨率及多屏幕適配
添加background(Image)、logo(Image)、name(text)、anykeyTxt(txt)
創建一個空對象,掛載腳本

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Scene_Start : MonoBehaviour { float _timer; GameObject anyKeyObj; // Use this for initialization void Start () { _timer = 0; anyKeyObj = GameObject.Find("anykeyTxt"); } // Update is called once per frame void Update () { _timer += Time.deltaTime; if (_timer % 0.5f > 0.25f) { anyKeyObj.SetActive(true); } else { anyKeyObj.SetActive(false); } if (_timer>5||Input.anyKeyDown) { //任意鍵按下,則直接跳轉主菜單場景 GoToMainMenu(); } } void GoToMainMenu() { SceneManager.LoadScene("MainMenu"); } }
anykeyTxt文字閃爍效果
文字狀態可見
anyKeyObj.SetActive(true);
文字狀態不可見
anyKeyObj.SetActive(false);
添加文字閃爍
if (_timer % 0.5f > 0.25f) { anyKeyObj.SetActive(true); } else { anyKeyObj.SetActive(false); }
5s鍾后或任意鍵按下,則直接跳轉到MainMenu場景
if (_timer>5||Input.anyKeyDown) { GoToMainMenu(); } void GoToMainMenu() { SceneManager.LoadScene("MainMenu"); }