private IEnumerator CollectMaterial()
    {
        yield return(null);

        yield return(null);

        UIPanel         panel   = GetComponent <UIPanel>();
        List <UIWidget> widgets = panel.widgets;

        foreach (var w in widgets)
        {
            if (!(w is UISprite))
            {
                continue;
            }
            UISprite sp = w as UISprite;

            UIAtlas atlas = sp.atlas;
            string  name  = atlas.name;

            MaterialTick mt = null;
            if (m_TextureSet.TryGetValue(name, out mt))
            {
                if (mt.tick <= 0)
                {
                    mt.atlas = atlas;
                }
            }
            else
            {
                m_TextureSet.Add(name, new MaterialTick(atlas));
            }
        }
    }
    private IEnumerator Load()
    {
        foreach (var m in m_TextureSet)
        {
            MaterialTick mt = m.Value;
            var          rq = mt.BeginRemain();
            if (rq == null)
            {
                continue;
            }

            while (!rq.isDone)
            {
                yield return(null);
            }
            mt.EndRemain(rq);
        }
        //gameObject.SetActive(false);
        //gameObject.SetActive(true);
    }