写在最前面:Jay 是我花了五天左右时间开发的同名游戏,基础机制借鉴了涂鸦跳跃,具体的参考视频可以点击以下链接

用周杰伦的第一张专辑Jay做了个游戏(祝杰伦118生日快乐)_单机游戏热门视频

这篇日志将记录游戏中如何创建一个简易的主菜单。

(一)创建 Button

1) 首先新建一个场景,命名为 Menu 。在该场景中创建一个 Button,这时引擎会自动添加上 Canvas,Text 和 EventSystem,如图所示:

选中 Button,在 Inspector 中找到 Button 组件,Transition 的选择默认是 Color Tint,在下面可以更改自己想要的不同情况下按钮的颜色,以达到更好的反馈效果。如果有做好的图片素材,可以把 Transition 的选择改成 Sprite Swap,这样就可以为不同的情况添加不同的图片。

2)  点开 Text,在 Inspector 把默认的 Text 内容改为“开始游戏”,注意一定要是 Text,这里如果用的是 TextMeshPro,是无法直接显示所输入的中文的。然后根据需要选择不同的字体字号等等,如果有字体过大时无法显示的问题,添加组件 Content Size Fitter 组件可以解决。

3)  为了有更好的呈现效果,这里介绍另一个组件 Shadow 。添加这个组件之后,字体会有影子,看起来更加立体,如图所示。在组件中可以自己调整影子的颜色和位置。

         

 4)  这样一个最基本的 Button 算创建好了。在 Canvas 下创建空物体命名为 MainMenu,把建好的 Button 拖到其下并复制两份,分别命好名更改好有关参数。

           

这里为了让按钮不管屏幕的尺寸如何变化都能始终出现保持在右上角,我把 MainMenu 的位置修改为下图所示的选项。同时选中 Canvas 组件,把 UI Scale Mode 改成 Scale With Screen Size。

(二)为 Button 添加事件

1)  在物体 MainMenu 新建同名脚本 MainMenu, 写入以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MainMenu : MonoBehaviour
{public GameObject Text;public void PlayGame() {Text.SetActive(true); //显示文字 “加载中...”Application.LoadLevel("SampleScene");  //载入游戏界面}public void QuitGame(){Application.Quit();  //退出游戏}}

这里会提示 "Application.LoadLevel(string)" 已过时,但不要紧,它仍然可以用。在后面的日志中我会另外记录使用 SceneManager 的写法。

由于我的游戏场景加载需要几秒时间,所以我额外创建了一个显示 “加载中” 的 Text。

 2)  在 PlayButton 的 Button 组件里找到 On Click(),点击加号添加新事件,将整个 MainMenu 物体拖入左下角,然后就可以在右边的下拉列表中找到刚刚定义好的函数 PlayGame。

同理为 QuitButton 也添加对应事件 QuitGame。

3)  OptionsButton 比较特殊。首先在 Canvas 下创建新的空物体 SettingsMenu ,并在该物体下创建一个新的 Button 命名为 BackButton,然后将 SettingsMenu 物体默认设置为隐藏。接下来为 OptionsButton 添加以下的事件:

这样点击这个按钮,就会显示 SettingsMenu 并且隐藏 MainMenu。类似地为 BackButton 也添加事件,唯一的不同是这次需要勾选 MainMenu 并取消勾选 SettingMenu。做完后我们就可以通过这两个按钮实现两个 Menu 的来回切换。至于 SettingsMenu 里具体的功能,比如音量调整、分辨率调整等等,这次就不写了,以后有机会再做补充。

(三)  背景图片

这个部分较为简单,主要就是调参。在 Canvas 下新建一个 Image,然后再把图片素材拖入 Inspector 中的 Source Image 即可。调整图片的大小和位置,以填满整个 Canvas。更多的参数设置建议参考官方手册中的介绍并且亲自尝试。Unity 用户手册 (2018.4) - Unity 手册

整个的框架就如下图所示,一个简单的主菜单就做好了。

【Unity】Jay 开发日志(五)——主菜单的创建相关推荐

  1. (Unity游戏开发)五天时间做出一款饥荒类的生存游戏Demo,项目在手,还怕面试官不给offer?

    游戏行业作为当下最火热的行业之一,受到了很多人的喜爱,也有很多同学想要进入游戏开发行业,但常常找不到靠谱的学习资源,不知道如何在入行前拥有项目经验,我为大家准备了最实用的unity游戏开发学习资料,助 ...

  2. Unity编辑器开发(五):实战、开发一个AB包编辑器工具

    前言 在我们上一篇(Unity编辑器开发(四):实战.开发一个AB包编辑器工具)的结尾,我们拥有了如下图中那样的一个编辑器窗口: 接下来我们来完成最后部分,也就是包括创建AB包,清理AB包,删除AB包 ...

  3. 项目实训--Unity多人游戏开发(五、转入前端开发+plasticSCM多人协同开发环境)

    目录 工作进展.打入前段 unity协同开发环境plasticSCM 总结 工作进展.打入前段 后端已经具备部分功能.前端因为素材以及游戏逻辑等原因,与上一期后端的内容没有开发,此部分无法进行及时测试 ...

  4. Java微信公众平台开发(十)--微信自定义菜单的创建实现

    转自:http://www.cuiyongzhi.com/post/48.html 自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自 ...

  5. 微信自定义菜单java_Java微信公众平台开发(九)--微信自定义菜单的创建实现

    自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自己用代码实现,所以对于刚开始接触的人来说可能存在一定的疑惑,这里我说下平时我们在开发 ...

  6. unity游戏开发日志(一)将mmd模型导入unity,并解决材质丢失的问题

    开发目标 从零开始开发一款音乐手游,类似钢琴块的玩法加QQ炫舞画面,实现一部想玩就可以随时玩的简单音游.该项目着重练手,以及技术交流,欢迎大家指导. 开发计划 计划在两个月内完成游戏,该游戏完成后将进 ...

  7. 【Unity】开发日志1——画笔 The Printer

    我每天都想去学习一些东西,但是每次做一半就坚持不下去,一方面的原因是:我的的确确遇到很多困难:另一方面的确是无从下手,不知道如何去学习: 我现在就是这样不断的摸索摸索,所以就写下我摸索的过程.一方面希 ...

  8. 【Unity VR开发】结合VRTK4.0:创建滑块

    语录: 只有经历地狱般的磨练,才能炼出创造天堂的力量. 前言: 滑块是一个非常简单的控件,它允许通过沿有限的驱动轴滑动 Interactable 来选择不同的值.我们将使用线性驱动器创建一个滑块控件, ...

  9. 微信公众号的二次开发(二 自定义菜单的创建)

    在上篇<微信公众号的二次开发(一)>我们介绍了微信订阅号的一些坑, 以及微信公众平台开发的一些基本配置.下面我们继续介绍如何通过用户关注等行为.获取用户的openid. 自定义微信公众号菜 ...

  10. 【Unity VR开发】结合VRTK4.0:创建圆盘

    语录: 茶若相似,味不必如一.但凡茗茶,一泡苦涩,二泡甘香,三泡浓沉,四泡清洌,五泡清淡,此后,再好的茶也索然无味.诚似人生五种,年少青涩,青春芳醇,中年沉重,壮年回香,老年无味. 前言: 我们在开发 ...

最新文章

  1. 请善用工具审核您的内核代码:)
  2. java保存base64图片_java保存base64位的图片,并且用时间文件夹分割
  3. hdu 4597 + uva 10891(一类区间dp)
  4. 【渝粤教育】国家开放大学2018年秋季 1133t文献检索 参考试题
  5. UE4中的字符串转换
  6. 软件工程敏捷开发01
  7. 日本要向中国收二维码使用费?每人一分钱?
  8. hive 日期函数_数据分析面试必备——SQL窗口函数你会了吗?
  9. 关于websocket长链接的使用
  10. 嵌入式DM(data matrix)码检测
  11. 谷歌浏览器安装与扩展程序
  12. NBA运动员球员数据分析
  13. Asterisk模块编写指南
  14. 小米路由器 使用chrome打不开网页
  15. 如何下载网页中的json文件
  16. 微信小程序 基础知识
  17. 奥斯汀大学计算机专业怎么样,美国计算机专业大学排名是怎样的?
  18. python期末大作业-图形化爬虫
  19. Hibernate高级映射技术(一)自定义数据类型StringList (转载用于收藏)
  20. c语言 数码管程序,两位数码管动态显示C语言程序+电路图

热门文章

  1. 微信企业号开发(一)
  2. 怎样以两种方式从Mac计算机上的启动板菜单中删除应用程序?
  3. 企业邮箱怎么弄企业邮箱是什么邮箱求一个企业邮箱账号
  4. 请不要再轻视Git —— 我在工作中是如何使用 Git 的
  5. 钉钉应用开发服务器API错误码原因及解决方法
  6. 计算机系统适应社会不断发展,教师招聘《中学教育心理学》通关试题每日练(2020年11月27日-944)...
  7. 可能改变前端工程化未来的特性:ESM Loader Hooks
  8. 路由器做二级路由方法
  9. 关于行人重识别方法PCB《Beyond Part Models: Person Retrieval with Refined Part Pooling 》及代码实现解读
  10. 各大硬核应用渠道开放平台SDK文档地址