Unity 之异步加载

来源:互联网 发布:程序员工作一年后工资 编辑:程序博客网 时间:2024/06/05 17:57
学习下
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);            }        }    }}

0 0
原创粉丝点击