예제 #1
0
    IEnumerator loadSpriteFromAB(RecorderSprite sprite, UnityAction <Sprite, Material> callback)
    {
        if (!sprite || sprite.name.isNullOrEmpty())
        {
            Debug.LogError("sprite is null");
            yield break;
        }
        if (callback.isNull())
        {
            Debug.LogError("callback is null");
            yield break;
        }

        if (!preloadAssetBundles.isNullOrEmpty())
        {
            foreach (var ab in preloadAssetBundles)
            {
                if (ab.name.Contains("common/atlas/"))
                {
                    if (!atlass.Any(a => a.name == ab.name))
                    {
                        yield return(StartCoroutine(loadAtlas(ab)));
                    }
                    if (loadSpriteFromAtlas(sprite, callback))
                    {
                        yield break;
                    }
                }
            }
        }
        Debug.LogError("啥子都没找到!!!请检查图集。图集名:" + sprite.atlas + "  图片名:" + sprite.name);
        callback(null, null);
    }
예제 #2
0
    protected void getSprite(RecorderSprite sprite, UnityAction <Sprite, Material> callBack)
    {
        if (!sprite)
        {
            Debug.LogError("sprite is null");
            return;
        }

        if (callBack.isNull())
        {
            Debug.LogError("callback is null");
            return;
        }

        UIResourceLoader.inst.loadSprite(sprite, callBack);
    }
예제 #3
0
 public void loadSprite(RecorderSprite sprite, UnityAction <Sprite, Material> callback)
 {
     if (!sprite || sprite.name.isNullOrEmpty())
     {
         Debug.LogError("sprite is null");
         return;
     }
     if (callback.isNull())
     {
         Debug.LogError("callback is null");
         return;
     }
     if (!loadSpriteFromAtlas(sprite, callback))
     {
         StartCoroutine(loadSpriteFromAB(sprite, callback));
     }
 }
예제 #4
0
    bool loadSpriteFromAtlas(RecorderSprite sprite, UnityAction <Sprite, Material> callback)
    {
        if (!sprite || sprite.name.isNullOrEmpty())
        {
            Debug.LogError("sprite is null");
            return(false);
        }
        if (callback.isNull())
        {
            Debug.LogError("callback is null");
            return(false);
        }
        if (atlass.isNullOrEmpty())
        {
            return(false);
        }

        var priorityAtlas = atlass.FirstOrDefault(a => a.name == sprite.atlas);

        if (priorityAtlas)
        {
            var s = priorityAtlas.getSprite(sprite.name);
            if (s)
            {
                callback(s, priorityAtlas.material);
                return(true);
            }
        }

        foreach (var atlas in atlass)
        {
            if (priorityAtlas && priorityAtlas.name == atlas.name)
            {
                continue;
            }

            var s = atlas.getSprite(sprite.name);
            if (s)
            {
                callback(s, atlas.material);
                return(true);
            }
        }
        return(false);
    }