u3d 异步加载场景以及进度条的显示

1、先建立两个场景

2、把两个场景在在build setting 中添加两个建好的两个场景

3、在第一个场景中建立一个button和slider组件

4、代码处理

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ButtonTest : MonoBehaviour {

public Button ButtonTestTran;
private AsyncOperation async;
private Slider slider;
void Start () {

ButtonTestTran = transform.Find("Button").GetComponent<Button>();
slider = transform.Find("Slider").GetComponent<Slider>();
ButtonTestTran.onClick.AddListener(()=> {
StartCoroutine(startGame()); //启动协程
});
}
private void ShowSlider(float num,float num2)
{

slider.value = num/ num2;
}
IEnumerator startGame()
{
async = SceneManager.LoadSceneAsync("addScenes1", LoadSceneMode.Single);//异步加载场景
async.allowSceneActivation = false;//async.progress的值增加到0.9后就保持不变 先不跳转场景
int num =0;
int num2 = 0;
while (async.progress < 0.9f)
{
num2 = (int)(async.progress * 100);
while (num < num2)
{
++num;
ShowSlider(num, 100);

yield return new WaitForEndOfFrame();
}
}
num2 = 98;//设置真实的进度为98%
int TempValue = (num2 - num) / 10;
Debug.LogError("num2=" + num2);
Debug.LogError("num=" + num);
Debug.LogError("TempValue=" + TempValue);
TempValue = TempValue == 0 ? 1 : TempValue;
while (num < num2)
{
num += TempValue;
num = num > num2 ? num2 : num;
ShowSlider(num, 100f);
yield return new WaitForEndOfFrame();
}
async.allowSceneActivation = true; //跳转场景
}
}

时间: 2024-08-05 03:22:25

u3d 异步加载场景以及进度条的显示的相关文章

Unity 异步加载场景

效果图如下: 今天一直在纠结如何加载场景,中间有加载画面和加载完毕的效果动画! A 场景到 B ,  看见网上的做法都是 A –> C –> B.  C场景主要用于异步加载B 和 播放一些加载场景的动画 AsyncOperation op = Application.LoadLevelAsync("C");   异步加载C场景 op.allowSceneActivation = false; 加载完毕之后不自动跳转到B场景(在加载结束的时候,就可以播放一些加载完毕的动画)

cordova加载层、进度条、文件选择插件

在做cordova项目的时候,感觉应用的响应速度跟原生应用比相差甚远,一个主要问题就是如加载层.进度条等弹出对话框的效率不行.毕竟项目中的这些弹框都是用dom拼成的,dom的渲染效率和原生控件比起来慢也是正常的.为了能够让应用尽可能的接近原生应用的效果,我业余时间做了一套对话框插件,使用后应用的使用体验立马有了很大的提升.兼容ios和安卓平台.插件包括加载层.进度条.文件选择.项目已经放到了github,有兴趣的小伙伴可以下载试一试. 插件只支持cordova5.0及以上版本,初始化如下: co

前端资源预加载并展示进度条

我们经常会看到,一些站点在首次进入的时候会先显示一个进度条,等资源加载完毕后再呈现页面,大概像这样: 然后整个页面的操作就会非常流畅,因为之后没必要再等待加载资源了.尤其是在移动端,或者是页游中,这样做能避免页面出现白屏(等待加载图片),很大程度提升用户体验.那这种技术是如何实现的呢?其实非常简单,本文就来从基础细节探究一番. 为什么需要资源预加载 大多时候,我们的页面并不是一次渲染完毕的,而是随着用户的操作,不断修改DOM节点,如果你动态插入了一个图片节点,那么浏览器要马上发一个http请求,

unity3d 异步加载场景代码

1 using UnityEngine; 2 using System.Collections; 3 4 /// <summary> 5 /// 加载场景 6 /// </summary> 7 public class LoadSence : MonoBehaviour { 8 9 10 private IEnumerator StartLoading(string SenceName) 11 { 12 int displayProgress = 0; 13 int toProgr

异步加载场景和Loading进度条制作

在切换场景的时候,直接 用 application.LoadLevel()这个方法,如果加载的场景资源过多的话,会卡死一段时间的. 所以,用一个过渡的场景的话,体验会好一点. 那么就先开始做一个过渡的场景(名字叫做:Loading)吧..(比如像下面酱紫,百度的一张图片) 要切换场景的时候,Application.LoadLevel("Loading"):就先切换到这个Loading场景,Loading场景资源少,就一个背景图和一个slider,所以,直接同步加载过来也很快的 然后,在

异步加载场景及Loading进度条制作

实现功能:点击开始游戏以后UI界面进入Loading界面,Loading结束以后自动进入游戏场景. 在这之前先在Build Settings中Add要使用的场景 在场景A中添加StartGame方法: Application.LoadLevel(1)://同步加载Loading界面(因为Loading界面资源较少速度快所以此处用同步方法) 在Loading场景中加入进度条图片:分为上下两层,上层负责显示进度 将上层的进度条Image组件中的Image Ttpe改为Filled 接下来再Loadi

【Unity笔记】使用协程(Coroutine)异步加载场景

using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using System; public class LoadingPage : MonoBehaviour { public UISlider progressBar; // 目标进度 float target = 0; // 读取场景的进度,取值范围0~1 float progress = 0; // 异步对象 AsyncOperat

ajax加载时的进度条

运行效果如下图,pc和移动都可以展示,调用方法很简单,开始调用:loading.baosight.showPageLoadingMsg(false),false代表不现实加载说明,true展示加载说明.调用完成后调用:loading.baosight.hidePageLoadingMsg(),有两个文件,一个是js文件,一个是css文件.别忘记引入jquery.js哦.想了解更多的可以加qq群:106320003 css文件 #_loadMsg{ display: inline-block; w

Unity异步加载场景loading条

using UnityEngine; using System.Collections; public class LoadingScene : MonoBehaviour { public UISlider processBar; private AsyncOperation async; private uint _nowprocess; // Use this for initialization void Start () { _nowprocess = 0; StartCoroutin