public static void UnrefSharedWebpTexture(Texture2D sharedTexture)
        {
            if (sharedTexture == null)
            {
                return;
            }

            for (int i = 0; i < sharedWebpTextures.Count; i++)
            {
                SharedWebpTextureEntry sharedWebpTextureEntry = sharedWebpTextures [i];
                if (sharedWebpTextureEntry == null)
                {
                    continue;
                }

                if (sharedWebpTextureEntry.texture == sharedTexture)
                {
                    sharedWebpTextureEntry.refCount--;
                    if (sharedWebpTextureEntry.refCount <= 0)
                    {
                        sharedWebpTextures.Remove(sharedWebpTextureEntry);
                    }
                    return;
                }
            }
        }
        public static Texture2D RefSharedWebpTexture(TextAsset webpAsset)
        {
            if (webpAsset == null)
            {
                return(null);
            }

            Texture2D sharedTexture    = null;
            string    sharedTextureKey = webpAsset.GetInstanceID().ToString();
            SharedWebpTextureEntry sharedWebpTextureEntry = GetSharedWebpTextureEntry(sharedTextureKey);

            if (sharedWebpTextureEntry != null)
            {
                // The texture might be already GCed
                if (sharedWebpTextureEntry.texture == null)
                {
                    sharedWebpTextures.Remove(sharedWebpTextureEntry);
                    sharedWebpTextureEntry = null;
                }
            }

            if (sharedWebpTextureEntry != null)
            {
                sharedWebpTextureEntry.refCount++;
                sharedTexture = sharedWebpTextureEntry.texture;
            }
            else
            {
                Status lError;
                sharedTexture = Texture2DExt.CreateTexture2DFromWebP(webpAsset.bytes, false, true, out lError, Texture2DExt.ScaleBy(1f));

                if (lError != Status.SUCCESS)
                {
//                    Debug.LogError ("SharedWebpTexture::RefSharedAlphaMaterial Webp Load Error : " + lError.ToString ());
                    return(null);
                }

                sharedWebpTextureEntry = new SharedWebpTextureEntry()
                {
                    assetId  = sharedTextureKey,
                    texture  = sharedTexture,
                    refCount = 1
                };

                sharedWebpTextures.Add(sharedWebpTextureEntry);
            }

            return(sharedTexture);
        }
        public static bool ContainSharedTexture(Texture2D sharedTexture)
        {
            if (sharedTexture == null)
            {
                return(false);
            }

            for (int i = 0; i < sharedWebpTextures.Count; i++)
            {
                SharedWebpTextureEntry sharedWebpTextureEntry = sharedWebpTextures [i];
                if (sharedWebpTextureEntry == null)
                {
                    continue;
                }

                if (sharedWebpTextureEntry.texture == sharedTexture)
                {
                    return(true);
                }
            }

            return(false);
        }