using System; using UnityEngine; namespace Kill.UI.Pages { /// /// 原生二维码扫描 - 调用系统相机扫码 /// public class NativeQRScanner : MonoBehaviour { // 扫码结果回调 public event Action OnQRCodeScanned; /// /// 开始扫码 /// public void StartScan() { #if UNITY_EDITOR // 编辑器模拟 Debug.Log("[NativeQRScanner] 编辑器模式,模拟扫码"); // 可以弹窗输入测试 #elif UNITY_ANDROID using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) using (AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity")) using (AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "com.google.zxing.client.android.SCAN")) { intent.Call("putExtra", "SCAN_MODE", "QR_CODE_MODE"); currentActivity.Call("startActivityForResult", intent, 0); } #elif UNITY_IOS // iOS 需要写原生插件 _StartScanIOS(); #endif } #if UNITY_IOS [System.Runtime.InteropServices.DllImport("__Internal")] private static extern void _StartScanIOS(); #endif /// /// 接收扫码结果(从原生回调) /// public void OnScanResult(string result) { Debug.Log($"[NativeQRScanner] 扫码结果: {result}"); OnQRCodeScanned?.Invoke(result); } } }