Unity游戏加载页面处理

Loading加载页面
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class Loading : MonoBehaviour {

    public Slider m_Slider;   //进度条
    public Text m_Text;      //文本区
    void Start()
    {
        StartCoroutine(StartLoading());
    }
    private IEnumerator StartLoading()
    {
        int displayProgress = 0;     //当前展示进度
        int toProgress = 0;          //总进度
        AsyncOperation op = SceneManager.LoadSceneAsync(Global.GetInstance().loadingName);     //采用异步加载的方式
        op.allowSceneActivation = false;
        while (op.progress<0.9f)
        {
            toProgress = (int)op.progress * 100;
            while (displayProgress < toProgress)
            {
                displayProgress++;
                SetLoadingPercentage(displayProgress);
                yield return new WaitForEndOfFrame();
            }
        }
        toProgress = 100;
        while (displayProgress < toProgress)
        {
            displayProgress++;
            SetLoadingPercentage(displayProgress);
            yield return new WaitForEndOfFrame();
        }
        op.allowSceneActivation = true;
    }
    public void SetLoadingPercentage(int DisplayProgress)
    {
        m_Slider.value = DisplayProgress * 0.01f;
        m_Text.text = DisplayProgress.ToString() + "%";
    }
}
Global
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Global : MonoBehaviour {

    private static Global instance;
    public static Global GetInstance()
    {
        if (instance == null)
        {
            instance = new Global();
        }
        return instance;
    }
    public string loadingName = "VRChessMap";
}



Unity中,游戏结束通常发生在特定的游戏状态或条件满足时,比如玩家角色被击败、关卡完成或选择了退出游戏等。游戏结束代码涉及以下几个步骤: 1. **设置游戏状态变量**:首先,定义一个表示游戏是否结束的布尔变量,如`isGameOver`或`gameWon`。 ```csharp public bool isGameOver; ``` 2. **检测结束条件**:在更新循环(Update())或其他关键游戏逻辑函数中检查这个变量是否被设置为`true`。 ```csharp if (/* 某个游戏胜利条件 */ || /* 或者失败条件 */) { isGameOver = true; } ``` 3. **显示游戏结束界面**:当`isGameOver`为`true`时,显示游戏结束的菜单或加载新的屏幕,这可能是一个提示玩家重新开始的菜单、游戏结果统计页面,或者直接回到主菜单。 ```csharp if (isGameOver) { // 显示游戏结束UI UIManager.ShowGameOverScreen(); } ``` 4. **处理退出逻辑**:玩家可以选择退出游戏,这时调用`Application.Quit()`或者跳转到主菜单。 ```csharp if (Input.GetKeyDown(KeyCode.Escape) && isGameOver) { Application.Quit(); } ``` 5. **清理资源和保存数据**:在游戏结束前,确保关闭所有动态加载的资源,并将游戏数据保存。 6. **虚函数或事件**:如果使用面向对象设计,可能会有一个`OnGameEnded()`之类的虚方法供子类重写,以便执行特定的清理或结果展示操作。 **相关问题**: 1. Unity中的Update()函数是什么作用? 2. 游戏结束时如何优雅地关闭动态加载的资源? 3. 如何在Unity中实现子类重写虚方法以响应不同的游戏结束行为?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值