コード例 #1
0
        public static void ReleaseView(EntityObject entity)
        {
            if (entity == null)
            {
                return;
            }

            ViewObject viewObj;

            if ((viewObj = m_objMap[entity]) == null)
            {
                return;
            }

            if (EnableLog && Debugger.EnableLog)
            {
                Debugger.Log(LOG_TAG, "ReleaseView() {0}:{1} -> {2}:{3}",
                             entity.GetType().Name, entity.GetHashCode(),
                             viewObj.GetRecycleType(), viewObj.GetInstanceID());
            }

            m_objMap.Remove(entity);
            viewObj.ReleaseInFactory();
            viewObj.gameObject.SetActive(false);

            // 将对象存入到对象池中
            m_recycler.Push(viewObj);
        }
コード例 #2
0
        /// <summary>
        /// 清理以及被释放掉的实例,并且对其进行回收
        /// </summary>
        public static void ClearReleasedObjects()
        {
            for (int i = m_objectList.Count - 1; i >= 0; i--)
            {
                if (m_objectList[i].IsReleased)
                {
                    EntityObject obj = m_objectList[i];
                    m_objectList.RemoveAt(i);

                    // 将对象存入对象池
                    m_recycler.Push(obj);
                }
            }
        }