最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

unity教程:加載場景時(shí)過場界面實(shí)現(xiàn)

2023-07-20 12:28 作者:塵風(fēng)一枚  | 我要投稿

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.SceneManagement;


public class UIManager : MonoBehaviour

{

public CanvasGroup UI;


private void Awake()

{

UI = FindObjectOfType<CanvasGroup>();

}


private void OnEnable()

{

SceneSwitchEventHandler.SwitchScenes += OnSwitchScenes;

}


private void OnDisable()

{

SceneSwitchEventHandler.SwitchScenes += OnSwitchScenes;

}


/// <summary>

/// 訂閱(場景切換)

/// </summary>

/// <param name="targetScene">目標(biāo)場景</param>

private void OnSwitchScenes(string targetScene)

{

StartCoroutine(SwitchScenes(targetScene));

}


/// <summary>

/// 切換場景方法

/// </summary>

/// <param name="targetScene">目標(biāo)場景</param>

private IEnumerator SwitchScenes(string targetScene)

{

//將加載顯示UI界面優(yōu)先級調(diào)高于其他場景的UI界面

UI.GetComponentInParent<Canvas>().sortingOrder = 1;

//調(diào)用方法 將加載顯示UI界面的透明度逐漸調(diào)高至完全不透明

yield return Fade(1);

//關(guān)閉當(dāng)前激活的場景 (異步)

yield return SceneManager.UnloadSceneAsync(SceneManager.GetActiveScene());

//加載需要的場景并設(shè)置為激活

yield return LoadSceneSetActive(targetScene);

//調(diào)用方法 將加載顯示UI界面的透明度逐漸調(diào)低至完全透明

yield return Fade(0);

//恢復(fù)加載顯示UI界面的優(yōu)先級

UI.GetComponentInParent<Canvas>().sortingOrder = -1;

}


/// <summary>

/// 加載場景并設(shè)置為激活

/// </summary>

/// <param name="sceneName">場景名</param>

/// <returns></returns>

private IEnumerator LoadSceneSetActive(string sceneName)

{

yield return SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);


Scene newScene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);


SceneManager.SetActiveScene(newScene);

}


/// <summary>

/// 逐漸修改UI界面的透明度

/// </summary>

/// <param name="targetAlpha">修改值</param>

/// <returns></returns>

private IEnumerator Fade(float targetAlpha)

{

UI.blocksRaycasts = true;


float speed = Mathf.Abs(UI.alpha - targetAlpha) / 1.5f;


while (!Mathf.Approximately(UI.alpha, targetAlpha))

{

UI.alpha = Mathf.MoveTowards(UI.alpha, targetAlpha, speed * Time.deltaTime);

yield return null;

}


UI.blocksRaycasts = false;

}

}


using UnityEngine;


public class LoadScene : MonoBehaviour

{

/// <summary>

/// 加載場景

/// </summary>

/// <param name="sceneName">加載場景名字</param>

public void SwitchScene(string sceneName)

{

SceneSwitchEventHandler.CallSwitchScenes(sceneName);

}

}


using System;


public static class SceneSwitchEventHandler

{

/// <summary>

/// 事件(切換場景時(shí)調(diào)用)

/// </summary>

public static Action<string> SwitchScenes;

/// <summary>

/// 調(diào)用事件

/// </summary>

/// <param name="targetScene">目標(biāo)場景</param>

public static void CallSwitchScenes(string targetScene)

{

SwitchScenes?.Invoke(targetScene);

}

}

unity教程:加載場景時(shí)過場界面實(shí)現(xiàn)的評論 (共 條)

分享到微博請遵守國家法律
安宁市| 大宁县| 巴中市| 河曲县| 霸州市| 廊坊市| 平南县| 孝感市| 屯昌县| 根河市| 黄冈市| 贺兰县| 美姑县| 南皮县| 明水县| 栾川县| 宜丰县| 普兰县| 故城县| 肥城市| 获嘉县| 扎赉特旗| 新化县| 乡宁县| 保靖县| 浮山县| 太原市| 怀柔区| 泸水县| 永泰县| 天台县| 新余市| 九台市| 得荣县| 汝州市| 富源县| 西贡区| 海南省| 桐乡市| 黄龙县| 大厂|