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脚本

添加退出游戏的方法:

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脚本,在该脚本中可以放一大堆不同的配置。

cs 复制代码
using UnityEngine;

public class GameManager : SingletonMonobehaviour<GameManager>
{
    protected void Awake()
    {
        base.Awake();

        //TODO: Need a resolution settings options screen
        Screen.SetResolution(1920, 1080, FullScreenMode.FullScreenWindow, 0);
    }
}

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

再次运行游戏。

相关推荐
尤老师FPGA21 小时前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第三十九讲)
ui
Aevget1 天前
界面组件Kendo UI for React 2025 Q3亮点 - AI功能全面提升
人工智能·react.js·ui·界面控件·kendo ui·ui开发
国服第二切图仔1 天前
Electron for 鸿蒙PC项目实战案例之数独游戏
游戏·electron·鸿蒙pc
_大学牲1 天前
Flutter 勇闯2D像素游戏之路(一):一个 Hero 的诞生
flutter·游戏·游戏开发
jtymyxmz1 天前
《Unity Shader》10.1.4 折射
unity·游戏引擎
wanhengidc1 天前
云手机 多端互通 科技
运维·服务器·科技·游戏·智能手机
在路上看风景1 天前
12. Burst
unity
测试界茜茜1 天前
独立搭建UI自动化测试框架分享
自动化测试·软件测试·功能测试·程序人生·ui·职场和发展
平行云PVT1 天前
实时云渲染解决UE5 像素流插件迁移及传输数据受限问题
unity·ue5·xr·实时云渲染·云桌面·像素流·云推流
星空露珠1 天前
lua获取随机颜色rgb转换hex
数据结构·数据库·算法·游戏·lua