Пример #1
0
        private static void BeforeInit()
        {
            //prev atlas
            AtlasData ad = null;

            tempAtlasList = new List <AtlasData>();
            for (int i = 0, count = atlasList.Count; i < count; i++)
            {
                ad = atlasList[i];
                if (ad != null && ad.referenceNum > 0)
                {
                    tempAtlasList.Add(ad);
                }
            }

            UnloadData uld;

            for (int i = 0, count = unloadList.Count; i < count; i++)
            {
                uld = unloadList[i];
                if (uld != null && uld.count > 0)
                {
                    ResLoader.RemoveAssetCacheByName(uld.data.atlasName);
                }
            }

            tempTextureList = new List <TextureData>();
            TextureData td = null;

            //prev texture
            for (int i = 0, count = textureList.Count; i < count; i++)
            {
                td = textureList[i];
                if (td != null && td.referenceNum > 0)
                {
                    tempTextureList.Add(td);
                }
            }

            UnloadTexData ultd = null;

            for (int i = 0, count = unloadTexList.Count; i < count; i++)
            {
                ultd = unloadTexList[i];
                if (ultd != null && ultd.count > 0)
                {
                    ResLoader.RemoveAssetCacheByName(ultd.data.textureName, false, false);
                }
            }
        }
Пример #2
0
        private static void RemoveTexture(int index)
        {
            bool dirtyRemove = false;

            if (index < 0)
            {
                dirtyRemove = true;
                index       = -index - 1;
            }

            if (dirtyRemove)
            {
                if (oldIndexTextureName == null)
                {
                    return;
                }
                if (index < 0 || index >= oldIndexTextureName.Count)
                {
                    Debugger.LogError("remove ui texture error->" + index);
                    return;
                }

                string name = oldIndexTextureName[index];
                ResLoader.RemoveAssetCacheByName(name, false, false);
            }
            else
            {
                if (index < 0 || index >= textureList.Count)
                {
                    Debugger.LogError("remove ui texture error->" + index);
                    return;
                }

                TextureData data = textureList[index];
                data.referenceNum--;
                Debug.LogError("remove atlas->" + data.textureName + "^" + data.referenceNum);

                if (data.referenceNum <= 0)
                {
                    UnloadTexData unloadData = unloadTexList[index];
                    unloadData.index = (short)index;
                    unloadData.count = 1;
                }
            }
        }
Пример #3
0
        private static void RequestTexture(short index, System.Action callback)
        {
            if (index < 0 || index >= textureList.Count)
            {
                Debugger.LogError("request texture is invalid->" + index);
                return;
            }


            TextureData data = textureList[index];

            if (data.texture != null)
            {
                if (data.referenceNum < 0)
                {
                    data.referenceNum = 0;
                }
                data.referenceNum++;
                if (callback != null)
                {
                    callback();
                }
                return;
            }

            if (index < 0)
            {
                return;
            }

            string name;

            if (!textureIndexToName.TryGetValue(index, out name))
            {
                return;
            }
            string destName;
            string path;
            int    size;
            bool   encrypt;

            Example.VersionFile.Type fileType;
            ResUpdate.GetLoadDetails(name, out destName, out path, out size, out encrypt, out fileType);
            if (path == null || path == "")
            {
                Debugger.LogError("ui texture is null->" + name);
                return;
            }

            if (!loadTextureCallDic.ContainsKey(index))
            {
                loadTextureCallDic.Add(index, new List <System.Action>());
            }

            List <System.Action> list = loadTextureCallDic[index];

            list.Add(callback);
            UnloadTexData ulData = unloadTexList[index];

            if (ulData.count >= 0)
            {
                ulData.count = -1;
            }
            if (list.Count == 1)
            {
                ResLoader.LoadByPath(name, destName, path, fileType, size, (asset, param) =>
                {
                    if (param == null)
                    {
                        return;
                    }

                    Texture tex = (Texture)asset;
                    ProcessTexture(tex, index);
                }, index);
            }
        }