2D游戏知识点五Unity 游戏加载页面显示
Posted シ゛甜虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2D游戏知识点五Unity 游戏加载页面显示相关的知识,希望对你有一定的参考价值。
unity帮助文档
Unity - Manual: Unity User Manual 2020.3 (LTS)
游戏页面加载帮助文档
https://docs.unity3d.com/ScriptReference/AsyncOperation-allowSceneActivation.html
官方示例代码
//This script lets you load a Scene asynchronously. It uses an asyncOperation to calculate the progress and outputs the current progress to Text (could also be used to make progress bars).
//Attach this script to a GameObject
//Create a Button (Create>UI>Button) and a Text GameObject (Create>UI>Text) and attach them both to the Inspector of your GameObject
//In Play Mode, press your Button to load the Scene, and the Text changes depending on progress. Press the space key to activate the Scene.
//Note: The progress may look like it goes straight to 100% if your Scene doesn’t have a lot to load.
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class AsyncOperationProgressExample : MonoBehaviour
{
public Text m_Text;
public Button m_Button;
void Start()
{
//Call the LoadButton() function when the user clicks this Button
m_Button.onClick.AddListener(LoadButton);
}
void LoadButton()
{
//Start loading the Scene asynchronously and output the progress bar
StartCoroutine(LoadScene());
}
IEnumerator LoadScene()
{
yield return null;
//Begin to load the Scene you specify
AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Scene3");
//Don't let the Scene activate until you allow it to
asyncOperation.allowSceneActivation = false;
Debug.Log("Pro :" + asyncOperation.progress);
//When the load is still in progress, output the Text and progress bar
while (!asyncOperation.isDone)
{
//Output the current progress
m_Text.text = "Loading progress: " + (asyncOperation.progress * 100) + "%";
// Check if the load has finished
if (asyncOperation.progress >= 0.9f)
{
//Change the Text to show the Scene is ready
m_Text.text = "Press the space bar to continue";
//Wait to you press the space key to activate the Scene
if (Input.GetKeyDown(KeyCode.Space))
//Activate the Scene
asyncOperation.allowSceneActivation = true;
}
yield return null;
}
}
}
先在界面上创建加载UI
给代码赋值
代码的实现
public Slider LoginSlider;
public Text SliderValue;
public Text Info;
public void Login()
{
if (!string.IsNullOrEmpty(RoomName.text))
{
LoginUi.active = true;
StartCoroutine(LoadScene());
}
}
IEnumerator LoadScene()
{
yield return null;
//Begin to load the Scene you specify
AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("level1");
//Don't let the Scene activate until you allow it to
asyncOperation.allowSceneActivation = false;
Debug.Log("Pro :" + asyncOperation.progress);
//When the load is still in progress, output the Text and progress bar
while (!asyncOperation.isDone)
{
//Output the current progress
Info.text = "Loading progress: " + (asyncOperation.progress * 100) + "%";
LoginSlider.value = asyncOperation.progress;
SliderValue.text = (asyncOperation.progress * 100) + "%";
// Check if the load has finished
if (asyncOperation.progress >= 0.9f)
{
LoginSlider.value = 1;
SliderValue.text = 100 + "%";
//Change the Text to show the Scene is ready
Info.text = "Press the space bar to continue";
//Wait to you press the space key to activate the Scene
if (Input.GetKeyDown(KeyCode.Space))
//Activate the Scene
asyncOperation.allowSceneActivation = true;
}
yield return null;
}
}
看下效果图,虽然有点丑陋但是功能是完整的
以上是关于2D游戏知识点五Unity 游戏加载页面显示的主要内容,如果未能解决你的问题,请参考以下文章
unity3d新建项目之后界面一片空白,怎么解决问题?(有图)