Example #1
0
        private void OnRenderTexture(string name, Texture2D texture2D)
        {
            if (texture2D == null)
            {
                for (int i = m_GetTextureTaskList.Count - 1; i >= 0; i--)
                {
                    GetTextureData task = m_GetTextureTaskList[i];
                    task.Dispose();
                    m_GetTextureTaskList.RemoveAt(i);
                }

                return;
            }

            int index = 0;
            IntegerRectangle useArea = InsertArea(texture2D.width, texture2D.height, out index);

            // Log.Info(name + ":texture2D:" + texture2D.width+"  "+texture2D.height);

            if (useArea == null)
            {
                Log.Error("No Area");
                return;
            }

            Rect uv = new Rect((useArea.x), (useArea.y), texture2D.width, texture2D.height);

            m_PageList[index].AddTexture(useArea.x, useArea.y, texture2D);

            SaveTextureData saveTextureData = SaveTextureData.Create();

            saveTextureData.texIndex = index;
            saveTextureData.rect     = uv;
            m_UsingTexture[name]     = saveTextureData;

            for (int i = m_GetTextureTaskList.Count - 1; i >= 0; i--)
            {
                GetTextureData task = m_GetTextureTaskList[i];
                if (task.name.Equals(name))
                {
                    m_UsingTexture[name].referenceCount++;
                }
                task.Dispose();
                m_GetTextureTaskList.RemoveAt(i);
            }
        }
Example #2
0
        /// <summary>
        /// Image组件用完之后
        /// </summary>
        /// <param name="name"></param>
        public bool RemoveTexture(string name, bool clearRange = false)
        {
            if (m_UsingTexture.ContainsKey(name))
            {
                SaveTextureData data = m_UsingTexture[name];
                data.referenceCount--;
                if (data.referenceCount <= 0)//引用计数0
                {
                    if (clearRange)
                    {
                        Log.Info("Remove Texture:" + name);
                        m_PageList[data.texIndex].RemoveTexture(data.rect);
                    }

                    m_UsingTexture.Remove(name);
                    data.Dispose();
                    return(true);
                }
            }
            return(false);
        }