34 lines
1.4 KiB
C#
34 lines
1.4 KiB
C#
using UnityEngine;
|
|
using Unity.Cinemachine;
|
|
|
|
namespace BaseGames.Camera
|
|
{
|
|
/// <summary>
|
|
/// 单房间虚拟相机。激活时提升优先级,停用时降为 0。
|
|
/// 挂载在每个房间的 CinemachineCamera GameObject 上。
|
|
/// </summary>
|
|
[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<CinemachineCamera>();
|
|
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;
|
|
|
|
/// <summary>在 CameraStateController 管理的激活流程中调用。</summary>
|
|
public void Activate() => gameObject.SetActive(true);
|
|
public void Deactivate() => gameObject.SetActive(false);
|
|
}
|
|
}
|