在Unity中一些Loading界面制作的小技巧

目录

1.使用自己的图片制作游戏开始、加载界面。

2.制作加载进度条并且实现场景跳转

3.制作简单计时器并且实现场景跳转


1.使用自己的图片制作游戏开始、加载界面。

添加Canvas,image,Rawimage.

将图片导入到Unity中,可以创建一个文件夹保存它们,直接拖拽进来即可。(图片拖拽到Rawimage上,就会显示图片)

2.制作加载进度条并且实现场景跳转

首先先添加场景:

后面的一些数字就代表着它们,会被写进代码里面实现跳转。

添加Slider和文本,可以调整成自己喜欢的形状和颜色。

实现代码:

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

using UnityEngine.UI;

public class Load: MonoBehaviour
{
    /// <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 = 10f;
    /// <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(1);//假装的加载完成后,还是要跳转到目标场景
            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;
        }
    }
}

一定要记得把进度条以及文本拖拽到脚本上面去,不然就无法运行。

3.制作简单计时器并且实现场景跳转

其实上面就用到了计时器,效果一致。

代码演示:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Threading;

public class TT4 : MonoBehaviour
{
   // private float alpha = 1.0f;
    private CanvasGroup cg;
    //计时器
    float time = 0;
    float progress = 0;
    
    float total_time = 3f;

    void Start()
    {
        cg = this.transform.GetComponent<CanvasGroup>();
    }

    void Update()
    {
       if(cg.alpha==1)
        { //记录时间增量
            time += Time.deltaTime;
            //当前进度随着时间改变的百分比
            progress = time / total_time;
            if (progress >= 1)
            {
                UnityEngine.SceneManagement.SceneManager.LoadScene(0);
                return;
            }
           
        }

    }
}

时间的控制大家可以自行调整。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nicole Potter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值