/// <summary> /// 当Chunk远离摄像机, 停止更新并储存 /// </summary> public IEnumerator ExitUpdate(Tilemap frontTilemap, Tilemap bkTilemap) { enableUpdate = false; foreach (BlockBase block in frontBlocks) { if (block != null) { block.ExitUpdate(); } } foreach (BlockBase block in bkBlocks) { if (block != null) { block.ExitUpdate(); } } for (int i = childObjects.Count - 1; i >= 0; i--) { IChunkObject child = childObjects[i]; if (child != null) { child.ExitUpdate(); } yield return(null); } Save(); }
// 检测Child GameObjects是否逃逸, 从列表删除逃逸的对象, 并返回逃逸的GameObject列表 (ChunkManager : 如果不在自己的范围, 就把它交给其他Chunk管理) public List <IChunkObject> CheckRunningChildren() { List <IChunkObject> outerChildren = new List <IChunkObject>(); for (int i = childObjects.Count - 1; i >= 0; i--) { IChunkObject child = childObjects[i]; //如果不包含这个GameObject, 就加入返回列表 if (!CheckContain(child.GetPosition())) { // 如果这个Chunk正在更新, 那么child物体退出更新 if (enableUpdate) { child.ExitUpdate(); } childObjects.Remove(child); outerChildren.Add(child); } } return(outerChildren); }