基于Unity3D的异步加载场景的实现
2017-11-05 22:34
387 查看
在游戏中,异步加载场景是个特别有用的切换场景方式,尤其是对于资源比较大得场景。今天,我们就来实现一个异步加载场景功能。
1.打开Unity,创建俩个新场景,并添加到Build Setting中,如图:
2.打开StartScene场景,创建一个Slider控件,创建一个新的C#脚本:AsyncLoadScene.cs,并挂在Slider游戏对象上,并将SceneName赋值为AsyncScene,如图:
AsyncLoadScene脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class AsyncLoadScene : MonoBehaviour {
//异步加载的场景名字
public string sceneName;
//进度条
private Slider slider;
//异步操作
private AsyncOperation async;
//加载的进度
private int currentProcess;
private int totalProcess=0;
void Start(){
slider = GetComponent ();
StartCoroutine(Loading());
}
void Update()
{
if (async != null)
{
//注意async.progress最大返回值为0.9
if (async.progress < 0.85f) {
totalProcess = (int)(async.progress * 100);
} else {
totalProcess = 100;
}
if (currentProcess < totalProcess) {
currentProcess++;
}
slider.value = currentProcess/100f;
if (currentProcess == 100)
{
async.allowSceneActivation = true;
}
}
}
//进度加载
IEnumerator Loading()
{
async = SceneManager.LoadSceneAsync(sceneName);
async.allowSceneActivation = false;
yield return async;
}
}
3.点击运行,即可看到当Slider加载满时,切换到AsyncScene场景了。
1.打开Unity,创建俩个新场景,并添加到Build Setting中,如图:
2.打开StartScene场景,创建一个Slider控件,创建一个新的C#脚本:AsyncLoadScene.cs,并挂在Slider游戏对象上,并将SceneName赋值为AsyncScene,如图:
AsyncLoadScene脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class AsyncLoadScene : MonoBehaviour {
//异步加载的场景名字
public string sceneName;
//进度条
private Slider slider;
//异步操作
private AsyncOperation async;
//加载的进度
private int currentProcess;
private int totalProcess=0;
void Start(){
slider = GetComponent ();
StartCoroutine(Loading());
}
void Update()
{
if (async != null)
{
//注意async.progress最大返回值为0.9
if (async.progress < 0.85f) {
totalProcess = (int)(async.progress * 100);
} else {
totalProcess = 100;
}
if (currentProcess < totalProcess) {
currentProcess++;
}
slider.value = currentProcess/100f;
if (currentProcess == 100)
{
async.allowSceneActivation = true;
}
}
}
//进度加载
IEnumerator Loading()
{
async = SceneManager.LoadSceneAsync(sceneName);
async.allowSceneActivation = false;
yield return async;
}
}
3.点击运行,即可看到当Slider加载满时,切换到AsyncScene场景了。
相关文章推荐
- Unity3D场景异步加载的实现案例
- unity3d实现Loading进度条异步加载场景
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- [Unity3D]异步加载游戏场景与异步加载游戏资源进度条
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度
- unity3d,异步加载场景
- Unity3D之异步加载游戏场景中关于进度条显示
- unity3d 异步加载场景和游戏对象
- 功夫小子实践开发-资源异步加载及过渡场景的分析和实现
- Unity3D——异步加载游戏场景loading界面的开发
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- unity3d异步加载场景
- C# Unity3D Loading场景异步加载代码实现
- 【Unity3D 打斗游戏开发】之二 异步加载场景
- Unity3D-UGUI-Image制作异步加载场景进度条
- Unity3D异步加载游戏场景
- unity3d异步加载场景
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- Unity3D技术之加载游戏场景并显示进度条实现详解
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)