unity_加载页面及进度条(代码片段)

W_NULL W_NULL     2022-12-09     793

关键词:

就是其他主页点击按钮后先跳转到这个加载页面场景, 同时异步加载要跳转到的场景

参考:Unity SceneManager场景管理Chinar详解API

Unity 场景异步加载(加载界面的实现)


新建一个加载页面场景

创建一个滑动条用来表示进度条

 

再创建一个文本用来显示进度百分比

 位置随便摆一下

创建一个空对象

在空对象上新建挂载脚本

 

修改代码:

/*加载场景页面*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using UnityEngine.UI;
using UnityEngine.SceneManagement;//场景管理

public class Load_test : MonoBehaviour

    // Start is called before the first frame update
    void Start()
    
        LoadNextLeaver();//开启协程(多线程?)
    

    // Update is called once per frame
    void Update()
    
        
    

    public GameObject image;   //加载界面
    public Slider slider;   //进度条
    public Text text;      //加载进度文本

    public void LoadNextLeaver()
    
        image.SetActive(true);
        StartCoroutine(LoadLeaver());
    
    IEnumerator LoadLeaver()
    
        AsyncOperation operation = SceneManager.LoadSceneAsync(2); //准备加载序号为2的场景
        operation.allowSceneActivation = true;//加载完成后,是否允许场景跳转
        while (!operation.isDone)   //当场景没有加载完毕
        
            slider.value = operation.progress;  //进度条与场景加载进度对应
            text.text = (operation.progress * 100).ToString() + "%";
            yield return null;
        
    




 运行测试,可以实现跳转和进度条


但目标场景太小了,瞬间闪一下就加载完了,就很出戏 

一个伪加载实现:

参考:Unity协程实现伪加载页面

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using UnityEngine.UI;

public class Load_test_ : MonoBehaviour

    // Start is called before the first frame update
    void Start()
    
        
    

    // Update is called once per frame
    //void Update()
    //
        
    //

    /// <summary>
    /// 进度条下方显示的文本
    /// </summary>
    [SerializeField]
    Text Aegis_text;
    /// <summary>
    /// 进度条
    /// </summary>
    [SerializeField]
    Slider slider;
    /// <summary>
    /// 文字后方点数显示
    /// </summary>
    float pointCount;
    /// <summary>
    /// 当前进度
    /// </summary>
    float progress = 0;
    /// <summary>
    /// 进度条读取完成时间
    /// </summary>
    float total_time = 3f;
    /// <summary>
    /// 计时器
    /// </summary>
    float time = 0;
    void OnEnable()
    
        //开启协程
        StartCoroutine("AegisAnimation");
    
    void Update()
    
        //记录时间增量
        time += Time.deltaTime;
        //当前进度随着时间改变的百分比
        progress = time / total_time;
        if (progress >= 1)
        
            UnityEngine.SceneManagement.SceneManager.LoadScene(2);//假装的加载完成后,还是要跳转到目标场景
            return;
        
        //把进度赋给进度条的值
        slider.value = progress;
    
    void OnDisable()
    
        //关闭协程
        StopCoroutine("AegisAnimation");
    
    /// <summary>
    /// 文本显示协程
    /// </summary>
    /// <returns></returns>
    IEnumerator AegisAnimation()
    

        while (true)
        
            yield return new WaitForSeconds(0.1f);
            float f = slider.value;
            //设置进度条的value值在某个区间的时候要显示的字符串
            string reminder = "";
            if (f < 0.25f)
            
                reminder = "检测余额中...";
            
            else if (f < 0.5f)
            
                reminder = "注入木马中...";
            
            else if (f < 0.75f)
            
                reminder = "破解密码中...";
            
            else
            
                reminder = "上传数据中...";
            
            //显示字符串后面的“.”
            pointCount++;
            if (pointCount == 7)
            
                pointCount = 0;
            
            for (int i = 0; i < pointCount; i++)
            
                reminder += ".";
            
            //把显示内容赋给场景中的text
            Aegis_text.text = reminder;
        
    

测试效果

unity使用ugui实现王者荣耀ui界面加载页面(进度条)(代码片段)

...章目录【Unity使用UGUI实现王者荣耀UI界面(一)】加载页面(进度条)1.素材准备2.界面分析3.打开UnityHub创建项目4.开始搭建UI1.准备工作2.背景图片3.导入素材4.配置背景图片5.进度条显示UI搭建6.脚本编写7.演示5.打... 查看详情

unity使用ugui实现王者荣耀ui界面加载页面(进度条)(代码片段)

...章目录【Unity使用UGUI实现王者荣耀UI界面(一)】加载页面(进度条)1.素材准备2.界面分析3.打开UnityHub创建项目4.开始搭建UI1.准备工作2.背景图片3.导入素材4.配置背景图片5.进度条显示UI搭建6.脚本编写7.演示5.打... 查看详情

unity3d场景切换加载进度条实现(代码片段)

...个场景,场景A,场景B,场景C;场景A:一个按钮,点击加载场景B;场景B:从A切换到C过度场景,加载进度条;场景C:目标场景;创建OnProgress.cs脚本:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.SceneManage... 查看详情

手把手教会你unity场景切换进度条制作(代码片段)

...、创建游戏场景及搭建面板UI二、添加代码(1)加载完成后进入场景完整代码(2)加载完成需要按键后进入场景完整代码三、最终效果四、结束语大家好,我是橙子,今天为大家带来的是Unity场景切换进度... 查看详情

vue项目实战61添加页面加载进度条效果(代码片段)

...成了数据报表的开发,本篇我们学习如何为项目添加加载进度条的效果。一、进度条效果我们要实现的效果就是,当我们点击每一个菜单,加载相应的页面时,在页面顶部中间会有一个加载的蓝色条条,随着... 查看详情

gameframework框架(unity3d)使用笔记(八)实现场景加载进度条(代码片段)

...:    游戏在转换场景的时候,需要花费时间来加载相关的资源。而这个过程往往因为游戏场景的规模和复杂度以及玩家电脑配置的原因花费一小段时间(虽然这个项目里用不到)。    所以,如果这一小... 查看详情

afhttpsessionmanager下载文件及下载中进度条处理,进度条处理需要特别注意,要加载nsrunloop中

 1.下载文件和进度条处理代码-(void)timer:(NSTimer*)timer{//另一个View中进度条progress属性赋值_downloadView.progress=self.pressing;if(self.pressing>=1.0){[timerinvalidate];}}-(void)downloadWithUrlString:(NSString*)url 查看详情

unity简单的进度条实现(代码片段)

制作进度条所需的资源:用以载入进度条显示的场景进度条背景以及进度条本身(颜色区别)展示百分制进度情况的Text文本需要载入的场景(这里使用的是自带场景)载入时的场景布局:要将Load的ImageType修改为Filled,FillMethod修... 查看详情

vue项目实战61添加页面加载进度条效果(代码片段)

...成了数据报表的开发,本篇我们学习如何为项目添加加载进度条的效果。一、进度条效果我们要实现的效果就是,当我们点击每一个菜单,加载相应的页面时,在页面顶部中间会有一个加载的蓝色条条,随着... 查看详情

unity3d序列帧动画制作方法---实现加载进度条(代码片段)

产品中经常用到加载动图,一般情况呢,我们都会根据UI设计师所给的UI图进行制作,我这里就介绍两种做法,此篇博客只是记录我怎么做的,方便我后续用,也希望能帮到大家。第一种是让UI设计师给一张包含里所有序列帧的大... 查看详情

案例-pyqt进度条案例(代码片段)

...tsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimport*importqueue#如果不加载这个模板,pyinstaller打包后,可能无法运行requests模板importrequests################################################################################################classWidget(QWidget):def__init__(self,*... 查看详情

过渡页面,加载进度(代码片段)

localLoadingView=class("LoadingView",BaseUI)--需要加载的plist文件localPLIST_FILE="unit/base/unit23_dead","unit/blue/blue_unit23_dead","unit/green/green_unit23_dead","unit/yellow/yellow_unit23_dead","ani/unit1/unit1","ani/unit_17/unit17","ani/unit_17/unit_17_flash","ani/attack/ATK_1","ani/atta... 查看详情

javaswing圆形加载进度条(代码片段)

查看详情

bootstrap进度条组件详解(代码片段)

...说了在网页中,进度条的效果并不少见,如:平分系统、加载状态等,进度条组件使用了css3的transition和animation属性来完成一些特效,这些特效在IE9及IE9以下版本、Firefox的老版本中并不支持, 查看详情

ngui的异步场景加载进度条(代码片段)

...、直接创建三个场景,其中第二个场景是用来显示进度条加载的界面,进度条用UISlider,不会的看我前面的博文就可以了。2、这里提供两种方法,建议使用第一种,加载比较平缓方法一: usingSystem.Collections;usingSystem.Collections.... 查看详情

AngularJS - 进度条为 100% 后重新加载页面 5 秒

】AngularJS-进度条为100%后重新加载页面5秒【英文标题】:AngularJS-Reloadpage5secondsonceprogressbaris100%【发布时间】:2019-10-1801:38:26【问题描述】:我想在进度条达到100%后5秒后重新加载页面我的代码是:<!DOCTYPEHTML><!--/**jQueryFileUp... 查看详情

php-cli多行进度条(代码片段)

我们使用PHP运行任务的时候,通常需要查看进度。要是能有一个像下载进度条一样直观的图就更好了。于是我做了一个。<?php/***______________*/___/______//______/_(_)________//*///-_)__/_\\/_\\/_\\/_//-_)_\\/_/*/_/\\__/\\__/_//_/_//_/\\___/_//_/\\__/_... 查看详情

unity3d___ugui中如何创建loading...进度条

http://blog.sina.com.cn/s/blog_e82e8c390102wh2z.html 实现方法:通过Image组件中ImageType属性中FillAmount,通过代码改变FillAmount的值就可以实现进度条效果 首先在Hierarchy中创建UI>Image,调整ImageType为Filled,FillMethod为Horizontal,拉动 查看详情