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. 场景设置

  1. 在场景中创建一个 Canvas。
  2. 创建两个空物体,分别命名为 'VersionChecker' 和 'DialogManager',并添加到 Canvas 中。
  3. 将 'VersionChecker.cs' 脚本附加到 'VersionChecker' 物体上,将 'DialogManager.cs' 脚本附加到 'DialogManager' 物体上。
  4. 创建一个 UI 按钮,将其命名为 'ConfirmButton',并将其拖动到 'DialogManager' 物体的 'confirmButton' 字段上。
  5. 创建一个 UI 文本组件,将其命名为 'TitleText',并将其拖动到 'DialogManager' 物体的 'titleText' 字段上。
  6. 创建一个 UI 文本组件,将其命名为 'MessageText',并将其拖动到 'DialogManager' 物体的 'messageText' 字段上。
  7. 调整 UI 按钮和文本组件的位置、大小和样式,使其符合你的需求。

4. 代码说明

  1. VersionChecker.cs
    • updateUrl: 版本号文本文件地址。
    • currentVersion: 当前版本号。
    • dialogManager: 弹窗管理器实例。
    • CheckVersion(): 检查版本号的协程。
    • 使用 UnityWebRequest.Get 获取版本号文本文件。
    • 使用 www.result != UnityWebRequest.Result.Success 判断是否出现网络错误。
    • 如果版本号不匹配,则调用 dialogManager.Show 显示弹窗。
  2. DialogManager.cs
    • dialogPanel: 弹窗面板对象。
    • titleText: 弹窗标题文本。
    • messageText: 弹窗内容文本。
    • confirmButton: 确认按钮。
    • Show(): 显示弹窗的函数。
    • Confirm(): 确认按钮点击事件函数,执行确认操作并关闭弹窗。

5. 运行

运行游戏,当版本号不匹配时,将会弹出提示弹窗。点击“退出”按钮即可强制退出游戏。

6. 注意

  • 确保 updateUrl 指向包含版本号的文本文件,并且 currentVersion 与文本文件中的版本号进行比较。
  • 可以根据需要修改弹窗的文本内容和样式。
  • 如果需要使用其他方法强制退出游戏,可以参考 Unity 文档。

希望本教程对您有所帮助。如果您有任何问题,请随时留言。

Unity 启动时版本比较提示弹窗并强制退出 - 完整示例

原文地址: https://www.cveoy.top/t/topic/cnLS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录