Unity 3D中使用EasyAR开启相机闪光灯遇CS1061错误求助
解决EasyAR中相机闪光灯设置的CS1061错误
错误原因
你代码里的cameraDevice.CameraParameters返回的是object类型,并非强类型的相机参数对象,所以直接访问FlashTorchMode会触发CS1061错误——编译器无法识别object类型上的该属性。
解决方案
EasyAR针对不同平台提供了强类型的相机参数类:
- Android平台:
CameraParametersAndroid - iOS平台:
CameraParametersiOS
需要先将CameraParameters强制转换为对应平台的类型,再设置闪光灯模式,最后将修改后的参数应用到相机设备才能生效。
修改后的完整代码
using UnityEngine; using easyar; public class FlashController : MonoBehaviour { private CameraDeviceBehaviour cameraDevice; private void Start() { cameraDevice = GetComponent<CameraDeviceBehaviour>(); } public void EnableFlash() { SetFlashTorchMode(true); } public void DisableFlash() { SetFlashTorchMode(false); } private void SetFlashTorchMode(bool enable) { if (cameraDevice == null || cameraDevice.Device == null) { Debug.LogError("CameraDeviceBehaviour 或 CameraDevice 未找到"); return; } // 获取当前相机参数并转为对应平台的强类型 object parametersObj = cameraDevice.CameraParameters; if (Application.platform == RuntimePlatform.Android) { var parameters = parametersObj as CameraParametersAndroid; if (parameters != null) { parameters.FlashTorchMode = enable; // 将修改后的参数应用到相机 cameraDevice.Device.setCameraParameters(parameters); } } else if (Application.platform == RuntimePlatform.IPhonePlayer) { var parameters = parametersObj as CameraParametersiOS; if (parameters != null) { parameters.FlashTorchMode = enable; // 将修改后的参数应用到相机 cameraDevice.Device.setCameraParameters(parameters); } } else { Debug.LogWarning("当前平台不支持闪光灯"); } } }
额外注意事项
- 确保已在EasyAR配置中开启相机及闪光灯相关权限
- 部分设备硬件不支持闪光灯,建议在设置前增加设备能力检查
- 修改参数后必须调用
cameraDevice.Device.setCameraParameters()才能让设置生效
内容的提问来源于stack exchange,提问作者phantom
相关产品推荐
相关产品推荐

