/// <summary>
        /// 隐藏实体
        /// </summary>
        /// <param name="entityId">实体编号</param>
        /// <param name="userData">用户自定义数据</param>
        public void HideEntity(int entityId, object userData = null)
        {
            //要隐藏的实体正在加载,就直接释放
            if (IsLoadingEntity(entityId))
            {
                int serialId = 0;
                if (!m_EntitiesBeingLoaded.TryGetValue(entityId, out serialId))
                {
                    Debug.LogError("没找到实体;" + entityId);
                }
                m_EntitiesToReleaseOnLoad.Add(serialId);
                m_EntitiesBeingLoaded.Remove(entityId);
                return;
            }

            //获取到实体信息
            EntityInfo entityInfo = GetEntityInfo(entityId);

            if (entityInfo == null)
            {
                Debug.LogError("获取要隐藏的实体的实体信息为空:" + entityId);
                return;
            }

            //获取实体与它的子实体
            Entity entity = entityInfo.Entity;

            Entity[] childEntities = entityInfo.GetChildEntities();
            foreach (Entity childEntity in childEntities)
            {
                //递归隐藏子实体
                HideEntity(childEntity.Id, userData);
            }

            //解除自身与父实体的关系
            DetachEntity(entity.Id, userData);

            //隐藏实体
            entityInfo.Status = EntityStatus.WillHide;
            entity.OnHide(userData);
            entityInfo.Status = EntityStatus.Hidden;

            //将隐藏的实体从实体组与实体信息字典中移除
            EntityGroup entityGroup = entity.EntityGroup;

            if (entityGroup == null)
            {
                Debug.LogError("隐藏的实体的实体组为空");
            }
            entityGroup.RemoveEntity(entity);
            if (!m_EntityInfos.Remove(entity.Id))
            {
                Debug.LogError("将隐藏的实体从实体信息字典中移除失败");
            }

            //派发隐藏实体完成事件
            HideEntityCompleteEventArgs e = ReferencePool.Acquire <HideEntityCompleteEventArgs>();

            m_EventManager.Fire(this, e.Fill(entity.Id, entity.EntityAssetName, userData, entityGroup));

            //将隐藏的实体加入回收队列
            m_RecycleQueue.AddLast(entityInfo);
        }