Unity 启动时版本比较提示弹窗并强制退出 - 完整示例
Unity 启动时版本比较提示弹窗并强制退出 - 完整示例
本教程提供了一个完整的 Unity 启动时版本比较的示例,包括创建版本检查器、弹窗管理器以及 UI 界面,并解决 UnityWebRequest 弃用问题。
1. 版本检查器 (VersionChecker.cs)
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class VersionChecker : MonoBehaviour
{
public string updateUrl = 'https://3dlingyu.com/update.txt';
public string currentVersion = '1.3';
public DialogManager dialogManager;
void Start()
{
StartCoroutine(CheckVersion());
}
IEnumerator CheckVersion()
{
using (UnityWebRequest www = UnityWebRequest.Get(updateUrl))
{
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
// 处理网络错误
Debug.Log(www.error);
}
else
{
string remoteVersion = www.downloadHandler.text.Trim();
if (remoteVersion != currentVersion)
{
// 版本不匹配,显示弹窗
dialogManager.Show('版本不匹配', '请更新到最新版本。', '退出', () =>
{
// 强制退出
Application.Quit();
});
}
}
}
}
}
2. 弹窗管理器 (DialogManager.cs)
using UnityEngine;
using UnityEngine.UI;
public class DialogManager : MonoBehaviour
{
public GameObject dialogPanel;
public Text titleText;
public Text messageText;
public Button confirmButton;
private System.Action confirmAction;
public void Show(string title, string message, string confirmButtonText, System.Action confirmAction)
{
this.confirmAction = confirmAction;
titleText.text = title;
messageText.text = message;
confirmButton.GetComponentInChildren<Text>().text = confirmButtonText;
dialogPanel.SetActive(true);
}
public void Confirm()
{
if (confirmAction != null)
{
confirmAction.Invoke();
}
dialogPanel.SetActive(false);
}
}
3. 场景设置
- 在场景中创建一个 Canvas。
- 创建两个空物体,分别命名为 'VersionChecker' 和 'DialogManager',并添加到 Canvas 中。
- 将 'VersionChecker.cs' 脚本附加到 'VersionChecker' 物体上,将 'DialogManager.cs' 脚本附加到 'DialogManager' 物体上。
- 创建一个 UI 按钮,将其命名为 'ConfirmButton',并将其拖动到 'DialogManager' 物体的 'confirmButton' 字段上。
- 创建一个 UI 文本组件,将其命名为 'TitleText',并将其拖动到 'DialogManager' 物体的 'titleText' 字段上。
- 创建一个 UI 文本组件,将其命名为 'MessageText',并将其拖动到 'DialogManager' 物体的 'messageText' 字段上。
- 调整 UI 按钮和文本组件的位置、大小和样式,使其符合你的需求。
4. 代码说明
- VersionChecker.cs
updateUrl: 版本号文本文件地址。currentVersion: 当前版本号。dialogManager: 弹窗管理器实例。CheckVersion(): 检查版本号的协程。- 使用
UnityWebRequest.Get获取版本号文本文件。 - 使用
www.result != UnityWebRequest.Result.Success判断是否出现网络错误。 - 如果版本号不匹配,则调用
dialogManager.Show显示弹窗。
- DialogManager.cs
dialogPanel: 弹窗面板对象。titleText: 弹窗标题文本。messageText: 弹窗内容文本。confirmButton: 确认按钮。Show(): 显示弹窗的函数。Confirm(): 确认按钮点击事件函数,执行确认操作并关闭弹窗。
5. 运行
运行游戏,当版本号不匹配时,将会弹出提示弹窗。点击“退出”按钮即可强制退出游戏。
6. 注意
- 确保
updateUrl指向包含版本号的文本文件,并且currentVersion与文本文件中的版本号进行比较。 - 可以根据需要修改弹窗的文本内容和样式。
- 如果需要使用其他方法强制退出游戏,可以参考 Unity 文档。
希望本教程对您有所帮助。如果您有任何问题,请随时留言。
原文地址: https://www.cveoy.top/t/topic/cnLS 著作权归作者所有。请勿转载和采集!