void OnDestroy() { if (mSeparateTree) { mSeparateTree.Clear(); } mSeparateTree = null; if (mProcessTaskQueue != null) { mProcessTaskQueue.Clear(); } if (mLoadedEntityList != null) { mLoadedEntityList.Clear(); } mProcessTaskQueue = null; mLoadedEntityList = 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, SeparateTreeType treeType, int quadTreeDepth = 5) { if (mIsInitialized) { return; } quadTreeDepth = Mathf.Clamp(quadTreeDepth, 1, 6); mSeparateTree = new SeparateTree(treeType, center, size, quadTreeDepth); mLoadedEntityList = new List <SeparateEntity>(); mPreDestroyQueue = new PriorityQueue <SeparateEntity>(new SeparateEntityWeightComparer()); mMaxCreateCount = Mathf.Max(0, maxCreateCount); mMinCreateCount = Mathf.Clamp(minCreateCount, 0, mMaxCreateCount); mMaxRefreshTime = maxRefreshTime; mMaxDestroyTime = maxDestroyTime; mIsAsyn = asyn; mIsInitialized = true; mRefreshTime = maxRefreshTime; }