想必加载场景的功能案例使用案例分析

想必加载场景的功能案例使用案例分析

加载场景这个功能在游戏开发中一定很常见。 如果你想从一个场景过渡到另一个资源更多的场景unity 异步切换场景,你将不得不等待一段时间。 这时候就需要一个过渡场景来告诉用户当前的加载进度。 此示例使用滑块和文本来显示加载进度。

使用系统。 收藏品;

使用统一引擎;

使用 UnityEngine.UI;

使用统一引擎。 场景管理;

公共类加载:MonoBehaviour

{

异步操作异步; //异步对象

公共字符串场景名称;

unity 异步切换场景_unity切换场景卡顿_unity vr切换场景

公共滑块加载滑块; //滑动条显示进度

公共文本加载文本; //显示进度的文本

private float loadingSpeed = 1;

私有浮动目标值;

无效开始()

{

加载滑块。 值 = 0.0f;

StartCoroutine("LoadScene");

unity 异步切换场景_unity切换场景卡顿_unity vr切换场景

}

IEnumerator 加载场景()

{

异步 = 场景管理器。 LoadSceneAsync(场景名称);

//异步。 allowSceneActivation = false;

打印(“加载:”+异步);

收益返回异步;

}

unity切换场景卡顿_unity 异步切换场景_unity vr切换场景

无效更新()

{

如果(异步==空)返回;

targetValue = async.progress;

//值高达0.9

如果(异步。进度> = 0.9f)

{

目标值 = 1.0f;

unity 异步切换场景_unity vr切换场景_unity切换场景卡顿

}

// 给滑块赋值

if (targetValue != loadingSlider.value)

{

loadingSlider.value = Mathf.Lerp(loadingSlider.value, targetValue, Time.deltaTime * loadingSpeed);

如果 (Mathf.Abs(loadingSlider.value - targetValue) < 0.01f)

{

加载滑块。 价值=目标价值;

unity切换场景卡顿_unity vr切换场景_unity 异步切换场景

}

}

// 给文本赋值

loadingText.text = ((int)(loadingSlider.value * 100)).ToString() + "%";

//允许异步加载后自动切换场景

如果 ((int)(loadingSlider.value * 100) == 100)

异步。 allowSceneActivation = true;

}

}

需要注意的是,在场景加载过程中音效,可能会出现一些耗时的线程卡死操作(比如从数据库中读取大量数据到内存中)unity 异步切换场景,此时要将相关代码放入另一个执行线程。 主线程和副线程同时运行。 在副线程完成之前,如果主线程无事可做,它就会等待。 当副线程运行完毕后音效,会向主线程发送信号,然后完成场景的加载动画。