using UnityEngine; namespace BaseGames.Camera { /// /// 全局相机镜头配置。 /// /// 作为 和各 之间的 /// 单一参数来源: /// - Persistent 场景的 在 Awake 时将 /// 写入两台全局 VCam 的 Lens。 /// - Room 场景的 引用同一 SO,编辑器工具在计算限位多边形 /// 时直接读取,无需依赖 Persistent 场景是否已加载。 /// /// 使用方式: /// 1. Project 窗口右键 → BaseGames/Camera/Lens Config 新建一个 SO 资产。 /// 2. 将该资产同时赋给 CameraStateController._lensConfig 和所有 CameraArea._lensConfig。 /// 3. 修改 后,编辑器会自动重新同步所有已打开场景中的 /// CameraArea 限位多边形。 /// [CreateAssetMenu(menuName = "BaseGames/Camera/Lens Config", fileName = "CameraLensConfig")] public class CameraLensConfigSO : ScriptableObject { [Tooltip("全局虚拟相机的垂直 FOV(度)。\n" + "修改此值后,编辑器会自动对所有已打开场景中的 CameraArea 重新同步限位多边形。\n" + "运行时由 CameraStateController 在 Awake 时应用到全局 VCam。")] [Range(1f, 179f)] public float fieldOfView = 60f; [Tooltip("摄像机到场景平面(Z = 0)的垂直距离(世界单位)。\n" + "与 fieldOfView 共同决定透视相机的视口尺寸,\n" + "用于将可视区域(VisibleBounds)换算为 CinemachineConfiner2D 限位多边形。\n" + "推荐与 Persistent 场景中相机 Transform 的 |Z| 保持一致(通常为 10)。\n" + "CameraArea._cameraDepth > 0 时以区域专有值优先覆盖此全局值。")] [Min(0.1f)] public float cameraDepth = 10f; } }