using UnityEngine; namespace AdaptUI { [ExecuteAlways] [RequireComponent(typeof(Camera))] public class CameraFOVAdapter : MonoBehaviour { [Header("默认 FOV(记录挂载时 FOV)")] public float defaultFOV = 60f; [Header("iPhone 设备 FOV")] public float iPhoneFOV = 60f; [Header("iPad 设备 FOV")] public float iPadFOV = 60f; private Camera _camera; private void Awake() { _camera = GetComponent(); #if !UNITY_EDITOR ApplyDeviceFOV(); #endif } #if UNITY_EDITOR private void Reset() { _camera = GetComponent(); float fov = _camera.fieldOfView; defaultFOV = fov; iPhoneFOV = fov; iPadFOV = fov; Debug.Log("CameraFOVAdapter: 挂载时记录默认 FOV"); } #endif public void ApplyDeviceFOV() { if (_camera == null) _camera = GetComponent(); var deviceType = DeviceTypeHelper.DetectDeviceType(); switch (deviceType) { case DeviceTypeHelper.DeviceType.iPhone: _camera.fieldOfView = iPhoneFOV; break; case DeviceTypeHelper.DeviceType.iPad: _camera.fieldOfView = iPadFOV; break; default: _camera.fieldOfView = defaultFOV; break; } Debug.Log($"Camera FOV 应用完成: 设备 = {deviceType}, FOV = {_camera.fieldOfView}"); } public void SetFOVForDevice(DeviceTypeHelper.DeviceType deviceType, float fov) { switch (deviceType) { case DeviceTypeHelper.DeviceType.iPhone: iPhoneFOV = fov; break; case DeviceTypeHelper.DeviceType.iPad: iPadFOV = fov; break; } } } }