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实现把一个页面层数据传递到另一个页面的两种方式
本博客整理了两种方式从一个页面层向另一个页面层传递参数. 一. 通过cookie方式 1. 传递cookie页面的html,此处命名为a.html 请输入用户名和密码: <input id=&q ...
- 1,全局变量;2,图形验证码;3,解决bug的毅力
通过这一整天的学习,主要解决了这三个: 1,全局变量 在函数外部定义: var gloabl: function test(){ global = " ": //不能写成va ...
- 初试spark java WordCount
初始环境:OS X 10.10.5 准备:boot2docker 进入boot2docker后安装 docker-spark 地址: https://github.com/sequenceiq/do ...
- O023、理解Nova架构
参考https://www.cnblogs.com/CloudMan6/p/5410447.html Compute Service Nova 是OpenStack最核心的服务,负责维护和管理云环 ...
- 【项目构建工具】 Gradle笔记2
一.Gradle执行流程 1.Gradle的执行流程(生命周期)主要是三个阶段: 初始化阶段:解析整个工程中所有Project,构建所有的Project对应的project对象 配置阶段:解析所有的p ...
- 使用Ant打包工具
由于使用java,javac,jar等工具进行编译打包,即繁琐低效又容易出错,因此Ant出现了.Ant的出现就是专门为了打包编译java代码的,使用之前得稍微学一下.Ant的运行起来主要是依靠配置文件 ...
- 关于python3.8的一些新特性的解析与代码演示
python3.8测试版出来了,我们来介绍一些变动,代码演示一下,当然底层相关的细节变动就不介绍了 只允许传位置参数 还记得如果我们想让某些参数只能以关键字参数的方式传递该怎么做吗? def foo1 ...
- Zookeeper的客户端使用
1.1 Zookeeper API(原生) 1)连接的创建是异步的,需要开发人员自行编码实现等待 2)连接没有超时自动的重连机制 3)Zookeeper本身没提供序列化机制,需要开发人员自行指定,从而 ...
- 手动写一个类支持foreach循环
之前初学时看过可以实现Iterable接口实现Iterator迭代器的支持,并且也支持foreach循环.现在学习了数据结构,手动写一个单链表支持foreach循环吧. 手写foreach循环步骤: ...
- RDO远程连接时错误提示解决办法
RDO远程连接时提示“远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助” 1.先用个人电脑自带远程工具mstsc连接到服务器Windows Serv ...