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预制体上

Unity3D_(游戏)卡牌02_主菜单界面的更多相关文章
- Unity3D_(游戏)卡牌03_选关界面
启动屏界面.主菜单界面.选关界面.游戏界面 卡牌01_启动屏界面 传送门 卡牌02_主菜单界面 传送门 卡牌03_选关界面 传送门 卡牌04_游戏界面 传送门 选关界面效果 (鼠标放在不同关 ...
- Unity3D_(游戏)卡牌01_启动屏界面
卡牌2D游戏展示 (游戏代码放到 卡牌04_游戏界面 文章最后面~) 游戏项目已托管到github上(里面有个32bit可执行文件) 传送门 规则 开始游戏每张卡牌初始翻开展示 展示几秒后卡牌 ...
- Unity3D_(游戏)卡牌04_游戏界面
启动屏界面.主菜单界面.选关界面.游戏界面 卡牌01_启动屏界面 传送门 卡牌02_主菜单界面 传送门 卡牌03_选关界面 传送门 卡牌04_游戏界面 传送门 选关界面效果 (源代码在文 ...
- java游戏开发杂谈 - 实现游戏主菜单
经常玩游戏的同学,大家都知道,游戏都会有个主菜单,里面有多个菜单选项:开始游戏.游戏设置.关于游戏.退出游戏等等,这个菜单是怎么实现的呢. 有一定桌面软件开发基础的同学可能会想到,用JButton组件 ...
- Unity3D_(游戏)甜品消消乐03_游戏UI设计
甜品消消乐01_游戏基础界面 传送门 甜品消消乐02_游戏核心算法 传送门 甜品消消乐03_游戏UI设计 传送门 (源码在文章最下面~) 实现过程 游戏界面UI 分数与时间的UI显示 有关游戏U ...
- cocos2d-x 3.3 之卡牌设计 NO.4 定时器的使用(清理内存)
我的卡牌游戏卡牌有两个类.各自是OpenCard和CardSprite. 不知道分成两个是不是有些奇怪.我分开的原因是:一个卡牌用来当手牌,一个用来当场上的牌,这样说是不是更加奇怪了.. 玩家类里定义 ...
- 使用UIKit制作卡牌游戏(三)ios游戏篇
译者: Lao Jiang | 原文作者: Matthijs Hollemans写于2012/07/13 转自朋友Tommy 的翻译,自己只翻译了这第三篇教程. 原文地址: http://www.ra ...
- TCG卡牌游戏研究:《炉石战记:魔兽英雄传》所做的改变
转自:http://www.gameres.com/665306.html TCG演进史 说到卡牌游戏,大家会联想到什么呢? 是历史悠久的扑克牌.风靡全球的<MTG 魔法风云会>与< ...
- 使用UIKit制作卡牌游戏(二)ios游戏篇
转自朋友Tommy 的翻译,自己只翻译了第三篇教程. 译者: Tommy | 原文作者: Matthijs Hollemans写于2012/07/06 原文地址: http://www.raywend ...
随机推荐
- 自动化测试_百度--糯米中--携程-出行<一>
1:接下来我们看看思路 和相应的功能 使用python+selenium+unittest完成测试脚本 打开chrome浏览器,窗口最大化,设置等待时间10s 打开百度首页 鼠标移动到更多产品,点击 ...
- Java Web开发技术教程入门-Model1和Model2
今天我们聊聊JSP开发中的Model1和Model2. Model1采用了JSP+JavaBean技术开发Web应用.其中,JSP实现页面显示,业务逻辑和流程控制,数据处理由JavaBean完成.在J ...
- Docker 镜像与容器管理
镜像与容器简介 Docker的大部分操作都围绕着它的三大核心概念:镜像.容器.仓库而展开.因此,准确把握这三大核心概念对于掌握Docker技术尤为重要,在docker中,我们重点关注的就是镜像和容器了 ...
- neo4j allshortestpaths查询路径不准确问题
同样是5年开发,年薪50万和年薪15万的差距在哪里-.>>> 基本语法 使用neo4j cypher查询语言的小伙伴都知道cypher提供了两个查询最短路径的特殊函数shortest ...
- Hyperledger Fabric(3)通道与组织
1,通道的结构 通道是Fabric中非常重要的概念(类似微信群?),它实质是由排序节点划分和管理的私有原子广播通道,目的是对通道的信息进行隔离,使得通道外的实体无法访问通道内的信息,从而实现交易的隐私 ...
- elastic 基本操作
官方参考文档: https://www.elastic.co/guide/cn/elasticsearch/guide/current/index-doc.html 1.查看 有哪些索引: curl ...
- Gh0st与云安全
黑产攻击途径升级,云服务成重灾区 在我们的印象里,黑产以及相关的肉鸡DDOS攻击总是离我们很远.可实际情况并非如此,特别是在云服务大行其道的今天. 日前,腾讯反病毒实验室就观察到了国内云服务中Gh0s ...
- kubesphere集群搭建(多节点)
kubesphere官网:https://kubesphere.io/docs/advanced-v2.0/zh-CN/introduction/intro/ 一.准备环境 1.准备服务器 maste ...
- SpringCloud 第一篇:服务的注册和发现(Eureka)
一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...
- 读《JavaScript面向对象编程指南》(二)
第五章 原型 在JavaScript中,所有函数都会拥有一个 prototype 的属性,默认初始值为空对象. 可以在相关的原型对象中添加新的方法和属性,甚至可以用自定义对象来完全替换掉原有的原型对象 ...