new void OnDisable() { base.OnDisable(); // if (_grayMaterial != null) { // _grayMaterial.mainTexture = null; // GameObject.DestroyImmediate (_grayMaterial); // _grayMaterial = null; // } if (mAtlas != null) { if (mAtlas.isBorrowSpriteMode) { if (mSprite != null && !string.IsNullOrEmpty(mSprite.name)) { mAtlas.returnSpriteByname(mSprite.name); // add by chenbin } mSprite = null; } } }
/// <summary> /// Returns the sprite byname.根据name释放sprite,add by chenbin /// </summary> /// <param name='name'> /// Name. /// </param> public void returnSpriteByname(string name) { if (mReplacement != null) { mReplacement.returnSpriteByname(name); } else { int i = spriteMap [name] == null ? -1 : (int)spriteMap [name]; if (i < 0) { return; } // Sprite s = sprites.Count > i ? sprites [i] : null; UISpriteData s = mSprites.Count > i ? mSprites [i] : null; if (s == null) { return; } int rc = retainCounter [s.path] == null ? 0 : (int)retainCounter [s.path]; rc--; #if UNITY_EDITOR if (Coolape.CLAssetsManager.self != null && !string.IsNullOrEmpty(Coolape.CLAssetsManager.self.debugKey) && s.path.Contains(Coolape.CLAssetsManager.self.debugKey)) { Debug.LogError("returnSpriteByname====" + s.path + "===" + name + "=====" + rc); } #endif retainCounter [s.path] = rc < 0 ? 0 : rc; if (rc <= 0) { s.lastReturnTime = System.DateTime.Now.AddSeconds(releaseSpriteTime).ToFileTime(); if (s.material != null && !releaseTex.Contains(name)) { releaseTex.Enqueue(name); ReleaseTexture(); } } } }