zoukankan      html  css  js  c++  java
  • Unity3D_(游戏)卡牌02_主菜单界面

     

    启动屏界面、主菜单界面、选关界面、游戏界面

    卡牌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();
        }
    
     
    }
    Scene_MainMenu.cs

    实现过程

    主菜单界面  

      添加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();
        }
    
     
    }
    Scene_MainMenu.cs

      注册三个按钮点击事件

        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;
    }
    LevelData.cs

      某一关数据结构

      申明关卡序列化

    [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.运行实例化
    
        可以在程序运行时来执行实例化操作。
    创建预设物体,在脚本中引用预设物体。
    相对而言脚本中代码也比较简洁,需要修改也比较简单只要对预设物体进行修改就可以了,不需要添加其他修改代码,
    与普通脚本相比预设创建的实例化物体,全部都是预设物体的克隆,可以提高程序运行效率和节省内存空间
    Unity:预制体

      复制LevelDataLogo预制体,命名为LevelDataStudent,修改Sprites下的图片样式,这样式为第二个游戏主题

      设置完别忘了"Apply",应用到LevelDataStudent预制体上

    (如需转载学习,请标明出处)
  • 相关阅读:
    BZOJ3573: [Hnoi2014]米特运输
    BZOJ3531: [Sdoi2014]旅行
    BZOJ3505: [Cqoi2014]数三角形
    BZOJ3309: DZY Loves Math
    BZOJ3260: 跳
    BZOJ3252: 攻略
    BZOJ3226: [Sdoi2008]校门外的区间
    BZOJ3155: Preprefix sum
    BZOJ2843: 极地旅行社
    BZOJ2671: Calc
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/9502613.html
Copyright © 2011-2022 走看看