【Unity】制作一个简单的菜单栏页面并实现其功能

这是一个简单的菜单页面制作,接下来我们将制作一个完整的菜单页面,并且通过一定的代码去实现它对应的效果。这个主要的功能就是我们在游戏中如果想暂停一下或者重新开始,那么就要用到我们这个功能。接下来我们将实现在游戏中按ESC退出键可以调用菜单栏,然后游戏进行暂停。只有当我们再一次进行菜单栏选择系统会做出对应的反应。

1.创建UGUI组件

(1)接下来我们制作一下整个菜单页面的UGUI,其大致制作效果如下图,有一下细节我们需要注意就是设置好Canvas的分辨率并且在创建UI组件的过程每一个物体我们对需要设置好对应的锚点让它固定在这个位置,不会随分辨率大小而改变。造成后面比较麻烦,所以我们需早期设置好他。如:字体的大小、颜色、背景图片等...

(2).我们创建好的菜单页面基本大致就是下面图,我们在图中已经标明每一个组件对应每一个物体,为了让我们看起来更容易清晰明了。

 2.实现菜单显示和隐藏

(1).创建一个菜单管理类脚本,我们编写代码实现在游戏中我们隐藏菜单,按ESC退出键可以调用出菜单。菜单中所创建的button组件我们也需要让他呈现出对应的效果,接下来我们创建脚本。

 GameManager游戏管理类脚本:

代码实现:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GameManager : MonoBehaviour
{// Start is called before the first frame update//单例模式public static GameManager instance;//是否暂停public bool isPasue;//菜单面板public GameObject MenuPanel;void Start(){instance = this;//禁用MenuPanel.SetActive(false);isPasue = false;}void Update(){//如果按下ESC键游戏暂停,显示出菜单页面if (Input.GetKeyDown(KeyCode.Escape)){//调用暂停游戏状态方法Pasue();}}//暂停游戏状态public void Pasue(){//暂停isPasue = true;//显示菜单页面MenuPanel.SetActive(true);Time.timeScale = 0;}//非暂停游戏状态public void UnPasue(){//非暂停isPasue = false;//隐藏菜单页面MenuPanel.SetActive(false);Time.timeScale = 1;}//重新开始游戏public void RestartGame(){//隐藏菜单面板MenuPanel.SetActive(false);//非暂停UnPasue();//分数清0ScoreManager.instance.score=0;}//继续游戏   从暂停状态切换到非暂停状态public void ContinueGame(){//调用非暂停游戏状态方法UnPasue();}//退出游戏public void QuitGame(){//退出游戏Application.Quit();}
}

(3).我们返回unity挂载对应的组件和对象。

  

3.效果图

(1)运行时。

(2)按ESC键。

(3)点击重新开始运行。

这里效果不太明显,下面我们等下接着测试。

4.实现分数效果

(1).我们创建一个ScoreManager分数管理类来编译分数变化情况。

 ScoreManager分数管理类脚本:

代码实现:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class ScoreManager : MonoBehaviour
{// Start is called before the first frame update//单例模式public static ScoreManager instance;//文本public Text scoreText;public int score = 0;void Start(){instance = this;}// Update is called once per framevoid Update(){//更新文本scoreText.text="分数:" + score.ToString();}//加分方法public void AddScore(){score += 1;}
}

(2).我们挂载对应的组件和对象。

 5.创建3D物体Cube

(1).我们创建一个cube,为了就是我们到时候鼠标点击它的时候可以加分,更好地看清楚它的效果。

调整一下它的大小。

(2).创建一个脚本挂载到cube组件上去,然后编写代码。

Cube代码:

代码实现:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SocialPlatforms.Impl;public class Cube : MonoBehaviour
{// Start is called before the first frame update//是否在范围内bool isRange;//点击冷却public float ClickTime = 1f;//计时器public float timer;// Update is called once per framevoid Update(){//只有当处于非暂停状态才能点击if (GameManager.instance.isPasue == false){//开始计时timer += Time.deltaTime;//如果计时时间大于冷却时间并且在范围内if (timer > ClickTime && isRange){//检测鼠标左键点击(按下瞬间)if (Input.GetMouseButtonDown(0)){ScoreManager.instance.AddScore();//重置计时器timer = 0f;}}}}//鼠标点击触发检测private void OnMouseDown(){print("点击到了");isRange = true;}//鼠标离开对象时触发private void OnMouseExit(){isRange = false;}
}

 6.回到Unity引擎

(1).禁用菜单组件。

(2).检测有没有漏挂对象和脚本。

7.运行效果

(1).开始运行

(2).点击cube 

(3).按ESC退出键测试继续运行。

ContinueGame

 (4).按ESC退出键测试重新开始运行。

RestartGame

(5).总体效果。

Menu

 这是一个简单的menu页面制作,制作一个menu的UGUI效果会使我们的项目更加精美使整个项目效果更加完美。 你学会了吗?我已经学会了....


最后

以上步骤就是制作一个简单完整的菜单栏页面系统的整个流程。希望能对你们提供帮助!!!

看到的小伙伴一键三连一下吧,你们的支持让我更有动力去创作和分享,希望能一直为你带来惊喜和收获。

2413988ad82470fe49997fa97ee1adf8.png
一键三连吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/98896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【3Ds Max】弯曲命令的简单使用

简介 在3ds Max中,"弯曲"(Bend)是一种用于在平面或曲面上创建弯曲效果的建模命令。使用弯曲命令,您可以将对象沿特定轴向弯曲,从而创建出各种弯曲的几何形状。以下是使用3ds Max中的弯曲命令的基本步骤&…

react使用antd的table组件,实现点击弹窗显示对应列的内容

特别提醒:不能在table的columns的render里面设置弹窗组件渲染,因为这会导致弹窗显示的始终是最后一行的内容,因为这样渲染的结果是每一行都会重新渲染一遍这个弹窗并且会给传递一个content的值,渲染到最后一行的时候,就…

08-MySQL-基础篇-约束

约束 前言约束示例 外键约束示例外键删除/更新行为语法CASCADESET NULL 前言 本篇来学习下MySQL表中字段的约束 约束 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的:保证数据库中数据的正确、有效性和完整性。分类 …

ORB-SLAM2学习笔记7之System主类和多线程

文章目录 0 引言1 整体框架1.1 整体流程 2 System主类2.1 成员函数2.2 成员变量 3 多线程3.1 ORB-SLAM2中的多线程3.2 加锁 0 引言 ORB-SLAM2是一种基于特征的视觉SLAM(Simultaneous Localization and Mapping)系统,它能够从单个、双目或RBG…

AIGC音视频工具分析和未来创新机会思考

编者按:相较于前两年,2023年音视频行业的使用量增长缓慢,整个音视频行业遇到瓶颈。音视频的行业从业者面临着相互竞争、不得不“卷”的状态。我们需要进行怎样的创新,才能从这种“卷”的状态中脱离出来?LiveVideoStack…

扩散模型实战(四):从零构建扩散模型

推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 本文以MNIST数据集为例,从…

基于Mysql+Vue+Django的协同过滤和内容推荐算法的智能音乐推荐系统——深度学习算法应用(含全部工程源码)+数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境MySQL环境VUE环境 模块实现1. 数据请求和储存2. 数据处理计算歌曲、歌手、用户相似度计算用户推荐集 3. 数据存储与后台4. 数据展示 系统测试工程源代码下载其它资料下载 前言 本项目以丰富的网易云音乐数据为基…

一文彻底理解时间复杂度和空间复杂度(附实例)

目录 1 PNP?2 时间复杂度2.1 常数阶复杂度2.2 对数阶复杂度2.3 线性阶复杂度2.4 平方阶复杂度2.5 指数阶复杂度2.6 总结 3 空间复杂度 1 PNP? P类问题(Polynomial)指在多项式时间内能求解的问题;NP类问题(Non-Deterministic Polynomial)指在…

深入理解分布式架构,构建高效可靠系统的关键

深入探讨分布式架构的核心概念、优势、挑战以及构建过程中的关键考虑因素。 引言什么是分布式架构?分布式架构的重要性 分布式系统的核心概念节点和通信数据分区与复制一致性与一致性模型负载均衡与容错性 常见的分布式架构模式客户端-服务器架构微服务架构事件驱动…

python从入门到精通——完整教程

阅读全文点击《python从入门到精通——完整教程》 一、编程入门与进阶提高 Python编程入门 1、Python环境搭建( 下载、安装与版本选择)。 2、如何选择Python编辑器?(IDLE、Notepad、PyCharm、Jupyter…) 3、Pytho…

JetBrains IDE远程开发功能可供GitHub用户使用

JetBrains与GitHub去年已达成合作,提供GitHub Codespaces 与 JetBrains Gateway 之间的集成。 GitHub Codespaces允许用户创建安全、可配置、专属的云端开发环境,此集成意味着您可以通过JetBrains Gateway使用在 GitHub Codespaces 中运行喜欢的IDE进行…

JavaWeb-Listener监听器

目录 监听器Listener 1.功能 2.监听器分类 3.监听器的配置 4.ServletContext监听 5.HttpSession监听 6.ServletRequest监听 监听器Listener 1.功能 用于监听域对象ServletContext、HttpSession和ServletRequest的创建,与销毁事件监听一个对象的事件&#x…

面试热题(不同的二分搜索树)

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 经典的面试题,这部分涉及了组合数学中的卡特兰数,如果对其不清楚的同学可以去看我以前的博客卡特兰数 …

安防监控/视频集中存储/云存储平台EasyCVR v3.3增加首页告警类型

安防监控/视频集中存储/云存储EasyCVR视频汇聚平台,可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等…

开学有哪些好用电容笔值得买?ipad触控笔推荐平价

因为有了Apple Pencil,使得iPad就成了一款便携的生产力配件,其优势在于,电容笔搭配上iPad可以让专业的绘画师在iPad上作画,而且还能画出各种粗细不一的线条,对于有书写需求的学生党来讲,还是很有帮助的。但本人不敢想像…

基于CNN卷积神经网络的口罩检测识别系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................ % 循环处理每张输入图像 for…

PHP基础

PHP&#xff08;外文名:PHP:Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本预处理器”&#xff09;是一种免费开源的、创建动态交互性站点的强有力的服务器端脚本语言 <h1>My Name is LiSi!</h1> <script>console.log("This message is…

星际争霸之小霸王之小蜜蜂(四)--事件监听-让小蜜蜂动起来

目录 前言 一、监听按键并作出判断 二、持续移动 三、左右移动 总结&#xff1a; 前言 今天开始正式操控我们的小蜜蜂了&#xff0c;之前学java的时候是有一个函数监听鼠标和键盘的操作&#xff0c;我们通过传过来不同的值进行判断&#xff0c;现在来看看python是否一样的实现…

深度学习最强奠基作ResNet《Deep Residual Learning for Image Recognition》论文解读(上篇)

1、摘要 1.1 第一段 作者说深度神经网络是非常难以训练的&#xff0c;我们使用了一个残差学习框架的网络来使得训练非常深的网络比之前容易得很多。 把层作为一个残差学习函数相对于层输入的一个方法&#xff0c;而不是说跟之前一样的学习unreferenced functions 作者提供了…