using GameWrapper; using UnityEngine; /// /// 相机逻辑接口 定义在GameWrapper中 实现放在Gameplay命名空间 /// public interface ICameraLogic { void Initialize(); void Cleanup(); void Update(); void AdjustSelf(); void KeepCenter(Vector3 centerPos); void CampKeepCenter(Vector3 centerPos); void InitializeCameraPosition(Vector3 targetPosition, CameraInfoData cameraInfo = null); void SetCameraFOVSize(float initialFOV); void RecordStartPos(); void ResetToStartPos(float during = 0.3f); } /// /// 相机逻辑工厂 /// public static class CameraLogicFactory { /// /// 委托定义 创建CameraLogic的工厂方法 /// public delegate ICameraLogic CreateCameraLogicDelegate(CameraData cameraData); /// /// 工厂方法 默认返回null /// private static CreateCameraLogicDelegate _factoryMethod = null; /// /// 注册相机逻辑工厂方法 /// public static void RegisterFactory(CreateCameraLogicDelegate factoryMethod) { _factoryMethod = factoryMethod; Debug.Log("Registered CameraLogic factory method"); } /// /// 创建相机逻辑实例 /// /// 相机数据 /// 相机逻辑实例,如果未注册工厂方法则返回null public static ICameraLogic CreateCameraLogic(CameraData cameraData) { if (_factoryMethod == null) { Debug.LogError("CameraLogic factory method not registered!"); return null; } return _factoryMethod(cameraData); } }