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 ...
随机推荐
- JS获取url中的指定参数
function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new O ...
- 深入理解python元类
类也是对象 在理解元类之前,你需要先掌握Python中的类.Python 中的类概念借鉴 Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.当然在 P ...
- 在Chrome中使用IE浏览器!
学校的毕业论文系统,无法完整显示网页,特别是下部的"提交"按钮看不见. IE11无效. 发现"360极速浏览器 7.5.3.186"能正常显示,百度网盘下载太慢 ...
- Ubuntu环境变量设置注意点
设置环境变量时,有一点要注意: /etc/bash.bashrc与/etc/profile是有区别的 什么区别呢? 打开一个新的shell时,会读取/etc/bash.bashrc和~/.bashrc ...
- 指针、数组与sizeof运算符
指针.数组与sizcof运算符 (1)sizeof是c语言的一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof的作用是用来返同()里面的变量或者数据类型占用的内存字节数. (2)s ...
- 会了docker你又多了一个谈资(上)
相信有到现在为止还是有很多同学只是听说过docker,但还不了解docker.也很想学习,但是又不知道从何入手,工作中又接触不到,而自己又懒得去翻阅各种学习资料,那么,读完本文,我保证,docker的 ...
- js 简单实现隐藏和显示
<html> <head> <meta charset="gb2312"> <title>隐藏和显示</title> & ...
- 第10课:[实战] Redis 网络通信模块源码分析(3)
redis-server 接收到客户端的第一条命令 redis-cli 给 redis-server 发送的第一条数据是 *1\r\n\$7\r\nCOMMAND\r\n .我们来看下对于这条数据如何 ...
- 数字转化为汉字,如5->五
//数字转化为汉字 如5-->五-(NSString*)translation:(NSString *)arebic{ NSString *str = arebic; NSArray ...
- python3之selenium.webdriver 库练习自动化谷歌浏览器打开百度自动百度关键字
import os,time,threading from selenium import webdriver from selenium.webdriver.common.keys import K ...