using System.Collections.Generic; using Sirenix.OdinInspector; using Unity.Cinemachine; namespace DDD { public class CameraManager : Singleton, IManager { [ShowInInspector, ReadOnly] private Dictionary _cameraGameObjects; private CinemachineBrain _cinemachineBrain; public void Init() { _cameraGameObjects = new Dictionary(); _cinemachineBrain = GetComponent(); } public void PostInit() { } public void RegisterCamera(CameraGameObject cameraGameObject) { _cameraGameObjects.TryAdd(cameraGameObject.Id, cameraGameObject); } public void UnRegisterCamera(CameraGameObject cameraGameObject) { _cameraGameObjects.Remove(cameraGameObject.Id); } public void SwitchCamera(CameraGameObject cameraGameObject, CinemachineBlendDefinition.Styles blendStyle = CinemachineBlendDefinition.Styles.Cut, float blendDuration = 1f) { _cinemachineBrain.DefaultBlend = new CinemachineBlendDefinition(blendStyle, blendDuration); foreach (var item in _cameraGameObjects) { int newPriority = item.Value.Id == cameraGameObject.Id ? 10 : 0; item.Value.SetPriority(newPriority); } } } }