| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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<Camera>();
- #if !UNITY_EDITOR
- ApplyDeviceFOV();
- #endif
- }
- #if UNITY_EDITOR
- private void Reset()
- {
- _camera = GetComponent<Camera>();
- float fov = _camera.fieldOfView;
- defaultFOV = fov;
- iPhoneFOV = fov;
- iPadFOV = fov;
- Debug.Log("CameraFOVAdapter: 挂载时记录默认 FOV");
- }
- #endif
- public void ApplyDeviceFOV()
- {
- if (_camera == null) _camera = GetComponent<Camera>();
- 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;
- }
- }
- }
- }
|