using UnityEngine; using Unity.Cinemachine; namespace BaseGames.Camera { /// /// 单房间虚拟相机。激活时提升优先级,停用时降为 0。 /// 挂载在每个房间的 CinemachineCamera GameObject 上。 /// [RequireComponent(typeof(CinemachineCamera))] public class RoomCamera : MonoBehaviour { [Header("房间设置")] [SerializeField] private RoomVisibleArea _visibleArea; [SerializeField] private Vector2 _cameraOffset = Vector2.zero; [SerializeField] private CameraBlendProfileSO _blendProfile; [SerializeField] private int _activePriority = 15; private CinemachineCamera _vcam; private void Awake() => _vcam = GetComponent(); private void OnEnable() => _vcam.Priority = _activePriority; private void OnDisable() => _vcam.Priority = 0; public PolygonCollider2D ConfinerCollider => _visibleArea?.Collider; public Vector2 CameraOffset => _cameraOffset; public CameraBlendProfileSO BlendProfile => _blendProfile; /// 在 CameraStateController 管理的激活流程中调用。 public void Activate() => gameObject.SetActive(true); public void Deactivate() => gameObject.SetActive(false); } }