Files
zeling_v2/Assets/_Game/Scripts/Camera/CameraLensConfigSO.cs
T
2026-05-19 11:50:21 +08:00

36 lines
1.8 KiB
C#

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