public void ResetAllData() { StopAllCoroutines(); if (m_QuadTree) { m_QuadTree.Clear(); } m_QuadTree = null; if (m_ProcessTaskQueue != null) { m_ProcessTaskQueue.Clear(); } if (m_LoadedObjectList != null) { foreach (var item in m_LoadedObjectList) { DestroyObject(item, false); } m_LoadedObjectList.Clear(); } m_ProcessTaskQueue = null; m_LoadedObjectList = null; m_TriggerHandle = null; m_IsInitialized = false; }
void OnDestroy() { if (m_QuadTree) { m_QuadTree.Clear(); } m_QuadTree = null; if (m_LoadedObjectList != null) { m_LoadedObjectList.Clear(); } m_LoadedObjectList = null; m_TriggerHandle = null; }
/// <summary> /// 初始化 /// </summary> /// <param name="center">场景区域中心</param> /// <param name="size">场景区域大小</param> /// <param name="asyn">是否异步</param> /// <param name="maxCreateCount">最大创建数量</param> /// <param name="minCreateCount">最小创建数量</param> /// <param name="maxRefreshTime">更新区域时间间隔</param> /// <param name="maxDestroyTime">检查销毁时间间隔</param> /// <param name="quadTreeDepth">四叉树深度</param> public void Init(Vector3 center, Vector3 size, bool asyn, int maxCreateCount, int minCreateCount, float maxRefreshTime, float maxDestroyTime, SceneSeparateTreeType treeType, int quadTreeDepth = 5) { if (m_IsInitialized) { return; } m_QuadTree = new SceneSeparateTree <SceneObject>(treeType, center, size, quadTreeDepth); m_LoadedObjectList = new List <SceneObject>(); //m_PreDestroyObjectQueue = new Queue<SceneObject>(); m_PreDestroyObjectQueue = new PriorityQueue <SceneObject>(new SceneObjectWeightComparer()); m_TriggerHandle = new TriggerHandle <SceneObject>(this.TriggerHandle); m_MaxCreateCount = Mathf.Max(0, maxCreateCount); m_MinCreateCount = Mathf.Clamp(minCreateCount, 0, m_MaxCreateCount); m_MaxRefreshTime = maxRefreshTime; m_MaxDestroyTime = maxDestroyTime; m_Asyn = asyn; m_IsInitialized = true; m_RefreshTime = maxRefreshTime; }