Unity 场景切换

Unity场景切换可使用以下方法:

1、SceneManager.LoadScene()方法:

复制代码
using UnityEngine.SceneManagement;

// 切换到Scene2场景
SceneManager.LoadScene("Scene2");

2、使用SceneManager.LoadSceneAsync()方法异步加载场景,异步加载我们还可以设置进度条:

复制代码
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;

public class SceneLoader : MonoBehaviour
{
    public Image progressImg; // 进度条UI元素
    public TextMeshProUGUI progressText; // 百分比文本元素

    private void Start()
    {
       
    }

    private IEnumerator LoadSceneAsync(string name)
    {
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(name);

        // 禁止场景在加载完成后自动切换
        asyncOperation.allowSceneActivation = false;

        while (!asyncOperation.isDone)
        {
            // 更新进度条的值
            float progress = Mathf.Clamp01(asyncOperation.progress / 0.9f); // 0.9是加载完成时的进度
            progressImg.fillAmount = progress;

            // 更新百分比文本
            int percentage = Mathf.RoundToInt(progress * 100);
            progressText.text = percentage.ToString() + "%";

            // 如果进度达到90%,允许场景切换
            if (progress >= 0.9f)
            {
                //因为在加载完成时,asyncOperation.progress的值可能不会达到100%,因此我们使用0.9作为阈值来判断加载是否完成。
                asyncOperation.allowSceneActivation = true;
            }

            //此处暂停一帧,等待进度条更新完成后进行渲染
            yield return null;
        }
    }


    // 启动异步加载场景的协程
    public void LoadAnotherScene(string name)
    {
        StartCoroutine(LoadSceneAsync(name));
    }
}

这里,我通过一个Image设置进度条,并加一个Text记录进度百分比,并写了个方法调用切换场景方法。我模拟的场景效果如下:

无论使用何种方法,我们都要在Build Setting中把场景加进去。

当我们使用上面两个方法切换场景,其中的参数就是进入这里查询,只有这里有参数对应的场景才能正常切换,此外参数除了用场景名,也可以用上图中场景添加的顺序值,如0,1...作为参数代替场景名参数。

相关推荐
叶帆6 天前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
久数君6 天前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型
会思考的猴子7 天前
Unity VFX 属性 Postion 和 TargetPostion
unity
hai3152475437 天前
九章编程法 · 猜数字游戏 (GW-BASIC 重构版) *
人工智能·microsoft·游戏引擎·游戏程序
心前阳光7 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎
心前阳光7 天前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎
纪纯7 天前
PicoVR Unity Integration SDK 3.4 常用交互API
unity·游戏引擎·vr·pico
龙智DevSecOps解决方案7 天前
3A 游戏优化技术栈:如何打通引擎级分析工具与 DevOps 持续集成管线?
unity·性能优化·游戏开发·技术美术·perforce·unrealengine
葛兰岱尔7 天前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
鼎艺创新科技7 天前
三维电子沙盘中OSGB倾斜摄影数据的加载与渲染
游戏引擎·cocos2d