啟動屏界面、主菜單界面、選關界面、游戲界面
卡牌01_啟動屏界面 傳送門
卡牌02_主菜單界面 傳送門
卡牌03_選關界面 傳送門
卡牌04_游戲界面 傳送門
主菜單界面


(選擇左邊圖標或選擇右邊圖標都是一樣進入SelectLevel場景)
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public enum THEME_ID { Logo, Student } public class Scene_MainMenu : MonoBehaviour { // Use this for initialization void Start () { GameObject.Find("LogoBtn").GetComponent<Button>().onClick.AddListener(()=>{ OnClickThemeBtn(THEME_ID.Logo); }); GameObject.Find("StudentBtn").GetComponent<Button>().onClick.AddListener(() => { OnClickThemeBtn(THEME_ID.Student); }); GameObject.Find("CloseBtn").GetComponent<Button>().onClick.AddListener(() => { OnCloseApp(); }); } // Update is called once per frame void Update () { } void OnClickThemeBtn(THEME_ID theme) { SceneManager.LoadScene("SelectLevel"); } //退出程序 void OnCloseApp() { Application.Quit(); } }
實現過程
主菜單界面
添加Canvas畫布自適應屏幕分辨率

放置兩個選擇游戲主題的按鈕,並添加退出按鈕,

選擇主題按鈕上添加了兩張卡通(口袋妖怪)圖片
右上角的按鈕實現退出程序
(Unity工程中點擊右上角按鈕不會退出程序,實際玩家運行游戲點擊該按鈕則實現退出游戲效果)
添加GameObject對象,掛在Scene_MainMenu.cs腳本

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public enum THEME_ID { Logo, Student } public class Scene_MainMenu : MonoBehaviour { // Use this for initialization void Start () { GameObject.Find("LogoBtn").GetComponent<Button>().onClick.AddListener(()=>{ OnClickThemeBtn(THEME_ID.Logo); }); GameObject.Find("StudentBtn").GetComponent<Button>().onClick.AddListener(() => { OnClickThemeBtn(THEME_ID.Student); }); GameObject.Find("CloseBtn").GetComponent<Button>().onClick.AddListener(() => { OnCloseApp(); }); } // Update is called once per frame void Update () { } void OnClickThemeBtn(THEME_ID theme) { SceneManager.LoadScene("SelectLevel"); } //退出程序 void OnCloseApp() { Application.Quit(); } }
注冊三個按鈕點擊事件
void Start () { GameObject.Find("LogoBtn").GetComponent<Button>().onClick.AddListener(()=>{ OnClickThemeBtn(THEME_ID.Logo); }); GameObject.Find("StudentBtn").GetComponent<Button>().onClick.AddListener(() => { OnClickThemeBtn(THEME_ID.Student); }); GameObject.Find("CloseBtn").GetComponent<Button>().onClick.AddListener(() => { OnCloseApp(); }); }
枚舉游戲主題按鈕
public enum THEME_ID { Logo, Student }
點擊按鈕跳轉游戲主題
GameObject.Find("LogoBtn").GetComponent<Button>().onClick.AddListener(()=>{ OnClickThemeBtn(THEME_ID.Logo); }); GameObject.Find("StudentBtn").GetComponent<Button>().onClick.AddListener(() => { OnClickThemeBtn(THEME_ID.Student); });
void OnClickThemeBtn(THEME_ID theme) { SceneManager.LoadScene("SelectLevel"); }
點擊關閉按鈕退出游戲程序
void OnCloseApp() { Application.Quit(); }
數據結構分析
添加新對象,掛在關卡數據腳本

using System.Collections; using System.Collections.Generic; using UnityEngine; //某一關數據結構 [System.Serializable] public class LevelInfo { public int id; //關卡id public int row; public int col; public int count; //本關從指定集合中隨機幾個素材 public string desc; //關卡簡要描述 public Sprite[] sprites; } public class LevelData : MonoBehaviour { public LevelInfo[] levels; }
某一關數據結構
申明關卡序列化
[System.Serializable]
[System.Serializable] public class LevelInfo { public int id; //關卡id public int row; public int col; public int count; //本關從指定集合中隨機幾個素材 public string desc; //關卡簡要描述 public Sprite[] sprites; } public class LevelData : MonoBehaviour { public LevelInfo[] levels; }


Id:游戲關卡
Row:關卡行
Col:關卡列
Count:關卡出現隨機素材
Desc:關卡備注信息
Size:關卡
將關卡數據設置為預制體
1.重名型
快速/方便的,創建大量可以使用重復的資源,這種創建時通過預設的實例化來完成的,預設完成后可以使用
Instantiate來完成實例化,來創建多個實例,從而實現預設的重名目的,而所有實例化物體又鏈接到原本的預設物體中,從而修改
預設的實例化物體時所有的創建的實例化物理的參數都會隨着預設物體修改的值而產生變化(更新),此又稱為物體的繼承性。
也可以對某一個實例物體進行單獨的修改,讓其與其他物體產生區別不用,此稱只為物體的重載性
可以直接拖動預設物體到場景等,可以重復進行
在一個場景中有多個預設的同樣的物體,可以在物體中選中該物體所屬的預設物體。
2.運行實例化
可以在程序運行時來執行實例化操作。
創建預設物體,在腳本中引用預設物體。
相對而言腳本中代碼也比較簡潔,需要修改也比較簡單只要對預設物體進行修改就可以了,不需要添加其他修改代碼,
與普通腳本相比預設創建的實例化物體,全部都是預設物體的克隆,可以提高程序運行效率和節省內存空間

復制LevelDataLogo預制體,命名為LevelDataStudent,修改Sprites下的圖片樣式,這樣式為第二個游戲主題
設置完別忘了"Apply",應用到LevelDataStudent預制體上

