当前位置: 首页 > news >正文

Unity3D仿星露谷物语开发54之退出菜单及创建可执行文件

1、目标

在菜单栏中添加一个退出游戏选项,同时创建一个exe程序执行退出游戏操作。

2、创建界面元素

(1)创建Tab1QuitGame对象

 重命名Tab1对象为Tab1QuitGame,添加Vertical Layout Group组件,相关配置如下:

在Tab1QuitGame下添加子物体命名为QuitGameButton,添加Image和Button组件,相关配置如下:

其中Normal Color值为:87775D,Highlighted Color值为:D8DB83。

在QuitGameButton下Create -> UI -> Text - TextMeshPro,修改配置如下:

效果为:

最后Disable Tab1QuitGame对象。

(2)修改Tab文字

修改SelectionTabButtonPanel下第2个SelectionButton的Text的值为Quit Game。

3、修改UIManager.cs脚本

添加退出游戏的方法:

public void QuitGame()
{Application.Quit();
}

然后QuitGameButton对象添加该函数:

如果在编辑器中运行,它不会退出应用程序,所以需要创造出可执行程序(比如exe文件)。

4、创建可执行文件

File菜单 -> Build Settings。

首先我们需要添加Scene,否则Build生成的是一个空的游戏。

点击"Add Open Scenes",此时可以看到所有Scene都已经添加进去了。

点击左下角的“Player Settings”。

点击Physics -> Layer Collision Matrix,只保留一个:

点击Player -> Resolution and Presentation,修改Fullscreen Mode,选择Exclusive Full Screen(独占全屏)。

点击Player -> Other Settings,

点击Quality,Vsync Count选择Every V Blank(每垂直消隐期同步)。开启垂直同步,游戏的帧率会与显示器的刷新率保持一致。比如显示器刷新率是 60Hz,那么游戏帧率就会稳定在 60 帧每秒 。

在Build Settings页面,点击Build运行:

我们 得到了3个错误:

针对第1个错误:Assets\Scripts\Map\TilemapGridProperties.cs(40,17): error CS0103: The name 'EditorUtility' does not exist in the current context

为什么会有这个错误?这个错误提示表明你在项目中使用了 EditorUtility 类,但它属于 Unity 编辑器命名空间(UnityEditor),该命名空间仅在 Unity 编辑器环境下可用,而在构建(Build)时会被排除,从而导致编译错误。

所以我们需要更改TilemapGridProperties.cs的代码,添加2行代码如下:

所以,这段代码只有在Unity编辑器中才会被编译,当进行独立构建的时候,此代码将不会被编译。

针对第2个错误:error: Could not set up a toolchain for Architecture x64. Make sure you have the right build tools installed for il2cpp builds

这个是因为缺少相关的lib包导致的,我们需要使用VS安装程序重新下载新的包。

进入工作负荷界面,勾选“使用C++的桌面开发”:

然后点击“修改”进行安装,等待安装完毕后重启电脑,重新打开Unit3D再Build即可生成exe文件。

打开exe文件运行游戏,点击菜单中的Quit Game即可退出游戏。

5、创建GameManager

在Assets -> Scripts下创建目录命名为GameManager。

在该目录下再创建GameManager.cs脚本,在该脚本中可以放一大堆不同的配置。

using UnityEngine;public class GameManager : SingletonMonobehaviour<GameManager>
{protected void Awake(){base.Awake();//TODO: Need a resolution settings options screenScreen.SetResolution(1920, 1080, FullScreenMode.FullScreenWindow, 0);}
}

在Hierarchy -> PersistentScene下创建新的物体命名为GameManager,然后添加组件GameManager。

再次运行游戏。

http://www.dtcms.com/a/216348.html

相关文章:

  • 非标RFID电子标签工业载码体如何定制?
  • win11如何重启
  • OpenCV---findCountours
  • 11.13 LangGraph记忆机制解析:构建生产级AI Agent的关键技术
  • Linux的五种IO模型
  • 《软件工程》实战— 在线教育平台开发
  • 2.1 Maven项目架构管理工具
  • Pathway:重新定义实时数据处理的Python框架
  • PHP实战:安全实现文件上传功能教程
  • SQL进阶之旅 Day 5: 常用函数与表达式
  • K8s边缘集群赋能工业自动化:从传感器监控到智能决策的全流程升级
  • 跨协议协同智造新实践:DeviceNet-EtherCAT网关驱动汽车焊接装配效能跃迁
  • UE5 蓝图,隐藏一个Actor,同时隐藏它的所有子物体
  • OpenCV CUDA模块图像处理------颜色空间处理之GPU 上交换图像的通道顺序函数swapChannels()
  • 【STM32】HAL库 之 CAN 开发指南
  • JS高级 - 对象
  • 十一、Samba文件共享服务
  • 2025年- H55-Lc163--124. 二叉树的最大路径和(深搜)--Java版
  • 以知识管理赋能 DevSecOps,加速关键领域软件自主演进
  • 字符串day7
  • 11.12 LangGraph全局共享状态实战:200ms实现50+仓库AI协同,效率飙升!
  • 科技赋能建筑行业,智能楼宇自控系统崭露头角成发展新势力
  • 拆解汽车HMI设计:如何用3D可视化提升驾驶安全感?
  • 服务发现Nacos
  • CMake指令:file()
  • Unity Sherpa-onnx 笔记
  • K8s入门(4)Kubernetes的技术演进
  • VR三维数字空间还原
  • 卓力达蚀刻工艺:精密制造的跨行业赋能者
  • 光电赋能低空场景,灵途科技助力无人机持续升级