Unity 之异步加载

学习下

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

public class UIMenu : MonoBehaviour
{
    /// <summary>
    /// 加载时间
    /// </summary>
    public float m_Time = 5f;

   

    /// <summary>
    /// 线的颜色
    /// </summary>
    public Color color;
    /// <summary>
    /// 是否开始渐变颜色
    /// </summary>
    private bool m_isColorGradient = false;

    /// <summary>
    ///加载Loading的背景 
    /// </summary>
    private Image m_ImageLg;
    /// <summary>
    /// 加载Loading 的text
    /// </summary>
    private Text m_TextLg;
    /// <summary>
    /// 是否加载完成
    /// </summary>
    private bool m_load_switch = false;
    /// <summary>
    /// 异步操作
    /// </summary>
    private AsyncOperation async_operation;
  



    void Awake()
    {
        //m_VR = Resources.Load("Prefab/[CameraRig]") as GameObject;
        //m_RayClickEffect = Resources.Load("effect") as GameObject;


        Initialize();
    }
    private void Initialize()
    {
        m_ImageLg = m_Menu.transform.FindChild("Loading").GetComponent<Image>();
        m_TextLg = m_Menu.transform.FindChild("Loading").FindChild("Text").GetComponent<Text>();
    }

    void Start()
    {
        m_isColorGradient = false;
    }


    void Update()
    {

        if (m_load_switch)
        {
            if (async_operation.isDone)
            {
                m_isColorGradient = false;
                m_load_switch = false;
            }
        }
        ColorChange(m_ImageLg.color, m_TextLg.color, m_isColorGradient);

    }

    /// <summary>
    /// 场景加载
    /// </summary>
    /// <param name="device"></param>
    /// <param name="hand"></param>
    /// <param name="m_tip"></param>
    /// <param name="raycast"></param>
    /// <param name="hit"></param>
    public void DeviceAction()
    {

                    m_isColorGradient = true;
                    StartCoroutine("LoadScene", "Medieval Village");
                
    }
   
    /// <summary>
    /// 加载场景
    /// </summary>
    /// <param name="scene_name"></param>
    /// <returns></returns>
    IEnumerator LoadScene(string scene_name)
    {
        async_operation = SceneManager.LoadSceneAsync(scene_name);
        m_load_switch = true;
        yield return async_operation;
    }

    /// <summary>
    /// 颜色渐变
    /// </summary>
    private void ColorChange(Color color1, Color color2, bool isGradient)
    {

        if (isGradient)
        {
            if (m_ImageLg.color.a <= 1)
            {

                Debug.Log(isGradient + "dsfdsfdsf" + i++);
                m_ImageLg.color += new Color(0, 0, 0, 0.01f);
                m_TextLg.color += new Color(1, 1, 1, 0.01f);
            }

        }
        else
        {
            if (m_ImageLg.color.a > 0)
            {
                m_ImageLg.color -= new Color(0, 0, 0, 0.01f);
                m_TextLg.color -= new Color(1, 1, 1, 0.01f);
            }
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值