游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2484|回复: 0

异步Loading进度条制作

[复制链接]

4

主题

4

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2016-3-23 09:46:45 | 显示全部楼层 |阅读模式
file:///C:/Users/Anchor/AppData/Local/Temp/enhtmlclip/QQ截图20150819175815.jpg

QQ图片20150819203335.png
实现功能:点击开始游戏以后UI界面进入Loading界面,Loading结束以后自动进入游戏场景。
在这之前先在Build Settings中Add要使用的场景
在场景A中添加StartGame方法:
Application.LoadLevel(1);//同步加载Loading界面(因为Loading界面资源较少速度快所以此处用同步方法)
在Loading场景中加入进度条图片:分为上下两层,上层负责显示进度
file:///C:/Users/Anchor/AppData/Local/Temp/enhtmlclip/Image(22).png
Image.png
将上层的进度条Image组件中的Image Ttpe改为Filled
Image21.png
file:///C:/Users/Anchor/AppData/Local/Temp/enhtmlclip/Image(23).png
接下来再Loading场景Cam中添加以下代码(通过改变Fill Amount显示Loading效果):
public class Loading : MonoBehaviour {
   AsyncOperation asyncOperation;    //声明一个异步变量
   public GameObject progress;          //声明进度条对象
   public GameObject Text;                //声明进度条上的显示文本   //对以上变量进行初始化
   void Start()
    {   
        progress.SetActive(true);
        progress = GameObject.FindWithTag("Fader");
        Text = GameObject.FindWithTag("Text");
        Text.GetComponent<Text>().text = "0";      
        progress.GetComponent<Image>().fillAmount = 0f;
        DontDestroyOnLoad(gameObject);
        StartCoroutine(loadScene()); //开启异步任务,进入loadScene方法
    }
    void Update()
    {
        Text.GetComponent<Text>().text = (float)asyncOperation.progress*100+10+"%"; //文本更新异步进度
        progress.GetComponent<Image>().fillAmount = (float)asyncOperation.progress+.1f;//进度条更新异步进度
    }
    IEnumerator loadScene()
    {
        yield return asyncOperation = Application.LoadLevelAsync(2);//读取完毕自动进入下一个场景
    }

}
最终效果如下:

file:///C:/Users/Anchor/AppData/Local/Temp/enhtmlclip/QQ图片20150819203335.png

QQ截图20150819175815.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 09:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表