| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | 
							- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- public class MapLodCtrl : MonoBehaviour
 
- {
 
-     public CameraBirdSec cameraBirdSec;
 
-     public List<LodLayer> MapList = new List<LodLayer>();
 
-     private int currentMapIndex;
 
-     public List<LodStayLayer> MapStayList = new List<LodStayLayer>();
 
-     
 
-     private void Awake()
 
-     {
 
-         cameraBirdSec.OnDistanceChange += OnCameraDistanceChange;
 
-     }
 
-     private void Start()
 
-     {
 
-         currentMapIndex = MapList.Count - 1;
 
-         MapList[currentMapIndex].map.ShowMap();
 
-         //cameraBirdSec.detailLod = false;
 
-         cameraBirdSec.currentDistance = MapList[currentMapIndex].cameraDistanceMax;
 
-         SetCameraRange(cameraBirdSec.currentDistance);
 
-     }
 
-     private void OnDestroy()
 
-     {
 
-         cameraBirdSec.OnDistanceChange -= OnCameraDistanceChange;
 
-     }
 
-     private void OnCameraDistanceChange(float value)
 
-     {
 
-         SetCameraRange(value);
 
-         // if (currentMapIndex == 0)
 
-         // {
 
-         //     if (value > MapList[currentMapIndex].cameraDistanceMax)
 
-         //     {
 
-         //         MapList[currentMapIndex+1].map.ShowMap();
 
-         //         MapList[currentMapIndex].map.Hide();
 
-         //         currentMapIndex++;
 
-         //
 
-         //         cameraBirdSec.detailLod = false;
 
-         //         cameraBirdSec.currentDistance = MapList[currentMapIndex].cameraDistanceMax;
 
-         //         SetCameraRange(MapList[currentMapIndex].cameraDistanceMax);
 
-         //         return;
 
-         //     }
 
-         //     SetCameraRange(value);
 
-         for (int i = 0; i < MapStayList.Count; i++)
 
-         {
 
-             if (value < MapStayList[i].cameraDistanceMax)
 
-             {
 
-                 MapStayList[i].map.ShowMap();
 
-             }
 
-             else
 
-             {
 
-                 MapStayList[i].map.Hide();
 
-             }
 
-         }
 
-         // }
 
-         // else
 
-         // {
 
-             // if (value>0)
 
-             // {
 
-             //     MapList[currentMapIndex-1].map.ShowMap();
 
-             //     MapList[currentMapIndex].map.Hide();
 
-             //     currentMapIndex--;
 
-             //     // if (currentMapIndex == 0)
 
-             //     // {
 
-             //     //     cameraBirdSec.detailLod = true;
 
-             //     // }
 
-             // }
 
-             // else
 
-             // {
 
-             //     if (currentMapIndex >= MapList.Count - 1)
 
-             //     {
 
-             //         return;
 
-             //     }
 
-             //     MapList[currentMapIndex+1].map.ShowMap();
 
-             //     MapList[currentMapIndex].map.Hide();
 
-             //     currentMapIndex++;
 
-             // }
 
-             // cameraBirdSec.currentDistance = MapList[currentMapIndex].cameraDistanceMax;
 
-             // SetCameraRange(MapList[currentMapIndex].cameraDistanceMax);
 
-         //}
 
-     }
 
-     private void SetCameraRange(float cameraDistance)
 
-     {
 
-         var currentLayer = MapList[currentMapIndex];
 
-         float distanceRange = (cameraDistance-currentLayer.cameraDistanceMin)/(currentLayer.cameraDistanceMax-currentLayer.cameraDistanceMin);
 
-         float minX =currentLayer.min_X_Range.x+Mathf.Abs(currentLayer.min_X_Range.x-currentLayer.max_X_Range.x)*distanceRange; 
 
-         float maxX =currentLayer.min_X_Range.y-Mathf.Abs(currentLayer.min_X_Range.y-currentLayer.max_X_Range.y)*distanceRange; 
 
-         float minY =currentLayer.min_Y_Range.y+Mathf.Abs(currentLayer.min_Y_Range.y-currentLayer.max_Y_Range.y)*distanceRange; 
 
-         float maxY =currentLayer.min_Y_Range.x-Mathf.Abs(currentLayer.min_Y_Range.x-currentLayer.max_Y_Range.x)*distanceRange;
 
-         //Debug.Log(minX);
 
-         //Debug.Log(maxX);
 
-         //Debug.Log(minY);
 
-         //Debug.Log(maxY);
 
-         cameraBirdSec.SetRange(minX,maxX,minY,maxY);
 
-     }
 
-     
 
- }
 
- [Serializable]
 
- public class LodLayer
 
- {
 
-     public MapGenerator map;
 
-     public float cameraDistanceMin;
 
-     public float cameraDistanceMax;
 
-     public Vector2 min_X_Range;//最短距离时候的X范围
 
-     public Vector2 max_X_Range;//最大距离时候的X范围
 
-     public Vector2 min_Y_Range;
 
-     public Vector2 max_Y_Range;
 
- }
 
- [Serializable]
 
- public class LodStayLayer
 
- {
 
-     public MapGenerator map;
 
-     public float cameraDistanceMin;
 
-     public float cameraDistanceMax;
 
- }
 
 
  |