您当前的位置: 首页 >  dangoxiba unity

【Unity2D】制作人物关卡加载界面(+阴影淡化)

dangoxiba 发布时间:2022-02-14 13:20:15 ,浏览量:3

参考视频:  https://www.youtube.com/watch?v=XUK4OkqtnBohttps://www.youtube.com/watch?v=XUK4OkqtnBo 学习目标: 每个游戏都会有它独一无二的加载界面,因此教大伙如何制作人物关卡加载界面(+阴影淡化) 学习内容:

首先我们创建另一个Canvas名字就叫NextCanvas和第一个Canvas区别,并把它的SortingOrder调为0

然后再给它一个Button作为点击事件再给Button一个子对象Text

我们在创建一个空对象LoadingManager并把第一个Canvas作为子对象,创建一个叫LoadingManager的脚本

内容如下:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class LoadingManager : MonoBehaviour {     //创建脚本的单例     public static LoadingManager instance;     public GameObject loadingPanel;     public GameObject loadingWheel;     //渐变阴影     public Image Fade;     public float FadeTime;     //要加载的目标场景     private string targetScene;     public float WheelSpeed;     //最小加载时间     public float minLoadTime;     //判断是否加载中     private bool isLoading;     private void Awake()     {         if(instance != null)         {             instance = this;             //加载下一个场景不要删除             DontDestroyOnLoad(instance);         }         loadingPanel.SetActive(false);         Fade.gameObject.SetActive(false);     }     public void LoadingScene(string sceneName)     {         targetScene = sceneName;         StartCoroutine(LoadSceneRoutine());     }          IEnumerator LoadSceneRoutine()     {         isLoading = true;         Fade.gameObject.SetActive(true);         Fade.canvasRenderer.SetAlpha(0);         while (!GetFade(1))             yield return null;         loadingPanel.SetActive(true);         StartCoroutine(SpinWheelRoutine());         while (!GetFade(0))             yield return null;         AsyncOperation operation = SceneManager.LoadSceneAsync(targetScene);         float elapsedLoadTime = 0f;         while (!operation.isDone)         {             elapsedLoadTime += Time.deltaTime;             yield return null;         }         while(elapsedLoadTime < minLoadTime)         {             elapsedLoadTime += Time.deltaTime;             yield return null;         }         while (!GetFade(1))             yield return null;         loadingPanel.SetActive(false);         while (!GetFade(0))             yield return null;         isLoading = false;     }     private bool GetFade(float target)     {         Fade.CrossFadeAlpha(target, FadeTime, true);         if (Mathf.Abs(Fade.canvasRenderer.GetAlpha() - target)
关注
打赏
1688896170
查看更多评论

dangoxiba

暂无认证

  • 3浏览

    0关注

    55博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0475s