unity异步加载场景+进度条

 

LoadingScene。cs放在在加载场景中

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class LoadingScene : MonoBehaviour {

    public Text LoadingText;
    public Slider loadingSlider;
    private AsyncOperation operation;
    int process;

    private float targetValue;
    private float loadingSpeed = 1;

   
	// Use this for initialization
	void Start ()
    {
        //Cursor.visible = false;
        loadingSlider.value = 0.0f;
        if (SceneManager.GetActiveScene().name == "NewLoading")
        {
            StartCoroutine(OnLoadingScene());
            //OnLoadSceneTest();
        }     
	}
	
	// Update is called once per frame
	void Update ()
    {
        //Cursor.visible = false;

        targetValue = operation.progress;
          if (operation.progress >= 0.9f)
          {
              targetValue = 1.0f;
          }
          if (targetValue != loadingSlider.value)
          {
              loadingSlider.value = Mathf.Lerp(loadingSlider.value,targetValue,Time .deltaTime*loadingSpeed);
              if (Mathf.Abs(loadingSlider.value-targetValue)<0.01f)
              {
                  loadingSlider.value = targetValue;
              }
          }
          LoadingText.text = ((int)loadingSlider.value * 100).ToString() + "%";
          LoadingText.text = System.Math.Truncate(loadingSlider.value * 100) + "%";

        //  Debug.LogError("***"+System.Math.Truncate(loadingSlider.value*100));
          if ((int)(loadingSlider.value*100)==100)
          {
              operation.allowSceneActivation = true;
          }


          process = (int)(operation.progress*100);
         // Debug.LogError(process);
       
    }


    private void OnGUI()
    {

    }
    void OnLoadSceneTest()
    {
        //SceneManager.LoadSceneAsync(Global.global_LoadSceneName);
        SceneManager.LoadScene(Global.global_LoadSceneName);
    }
    IEnumerator OnLoadingScene()
    {
        operation = SceneManager.LoadSceneAsync(Global.global_LoadSceneName);
        operation.allowSceneActivation = false;
        yield return operation;
    }
    //private void OnGUI()
    //{
        
    //}
}

  

 

全局变量Global

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

public class Global
{
    public static string global_LoadSceneName;
    public static int currentScannerQRCodeID;
    public static bool IsStartThisEquipmentCheck=false;
    public static bool IsNormalStartThisStepTwo=false;
    public static bool IsAbnormalStartWordReport = false;
    public static bool IsConfirmStartThisStepTwo = false;
    public static bool IsConfirmStartThisStepThree = false;
    public static bool isCurrentTypeAlreadyCreateText = false;

    public static string FirstScannerQRCode;
    public static string ScannerUserNameText;
}

 点击toggle加载场景。

 ConfirmLinePanelUI.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UIlogic;
using UnityEngine.SceneManagement;
public class ConfirmLinePanelUI : MainUI
{
   
    public Toggle ConfirmReadyToggle;
    void Start()
    {
        OnBindEvent();
        OnInit();
        OnSetCurrentPanelInfomation();
    }
    //绑定按钮事件
    public override void OnBindEvent()
    {
        //Toggle绑定
        ConfirmTaskToggle.onValueChanged.AddListener(OnBindClickConfirmTaskToggle);
        ConfirmLineToggle.onValueChanged.AddListener(OnBindClickConfirmLineToggle);
        ConfirmReadyToggle.onValueChanged.AddListener(OnBindClickConfirmReadyToggle);
    }
   public void OnBindClickConfirmReadyToggle(bool bol)
    {
        OnClickConfirmReadyToggle();
        // Debug.LogError("Toggle IsClick"+ bol);
    }
  public void OnClickConfirmReadyToggle()
    {
       
        Global.global_LoadSceneName = "NewTestARRecognition";
        //GameTemplateMethodSingleton.singleton.OnLoadLevel("NewLoading");
        SceneManager.LoadSceneAsync("NewLoading");

       
    }
}

  

posted @ 2019-03-28 14:19  WalkingSnail  阅读(702)  评论(0)    收藏  举报