Exemplo n.º 1
0
 /// <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();
 }
Exemplo n.º 2
0
        // 检测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);
        }