### Unity 导出设置(iOS) 1. 在 Unity 中选择`File > Build Settings > iOS` 2. 配置项: - 确保`Export Project`被勾选 - 脚本后端选择`IL2CPP` - 勾选`Development Build`用于调试 - 目标架构选择`ARM64` - 在`Player Settings > Other Settings`中: - 设置 Bundle Identifier: `com.example.arTourismFlutterUnity` - 最低 iOS 版本: 12.0 - 设置必要的权限(Camera, Location 等) 3. 导出项目后,将整个导出的 Unity-iPhone 项目复制到 Flutter 项目的`ios/UnityLibrary`目录 ### Info.plist 配置 确保 Info.plist 文件包含所有必要的权限描述: ```xml NSCameraUsageDescription 此应用需要使用相机进行AR体验 NSPhotoLibraryUsageDescription 需要相册权限用于保存和选择媒体 NSMicrophoneUsageDescription 此应用需要访问您的麦克风以提供录像服务 NSLocationWhenInUseUsageDescription 此应用需要访问您的定位以提供导航服务 NSLocationAlwaysUsageDescription App需要您的同意,才能始终访问位置 ``` ## 跨平台数据交互 Unity 与 Flutter 之间通过 MethodChannel 进行数据交互: ```dart // 在Flutter中 static const platform = MethodChannel('com.example.ar_tourism_flutter_unity.unity'); // 调用Unity方法 await platform.invokeMethod('start_unity', { 'token': userToken, 'sceneName': 'Main', 'returnToHome': true }); // 接收Unity消息 platform.setMethodCallHandler((call) async { switch (call.method) { case 'onUnityMessage': // 处理来自Unity的消息 break; case 'onUnityBackPressed': // 处理Unity返回事件 break; } }); ``` ## iOS 打包流程 1. 更新版本号: - 在`pubspec.yaml`中更新版本号 - 在 Xcode 中更新版本号和构建号: 在 Xcode 左侧导航栏中点击最顶部的 "Runner" 项目 在中间区域确保选中 "Runner" target(不是 Project) 点击上方的 "General" 标签 向下滚动找到 "Identity" 部分,里面有两个重要的版本号设置: Version (显示版本号) Build (构建版本号) 确保 与p0ubspec.yaml 中的版本号一致 2. 配置签名和证书: - 在 Xcode 中配置正确的签名证书和配置文件 3. 构建和归档: ``` flutter build ios --release ``` 然后在 Xcode 中进行归档和上传到 App Store ## 注意事项 1. 内存管理:iOS 系统内存限制较严格,需确保 Unity 资源及时释放 2. Framework 路径:确保 UnityFramework.framework 在正确的路径并被正确引用 3. 权限处理:提前在 Info.plist 中配置所有必要权限 4. Bitcode 禁用:Unity 不支持 Bitcode,需在项目配置中禁用 5. 架构兼容:确保所有库使用兼容的架构(推荐仅使用 ARM64) # iOS 包名:com.example.arTourismFlutterUnity 打开 Xcode 项目: Apply to README.md Run 在 Xcode 中,右键点击项目导航器中的项目根目录 选择"Add Files to 'Runner'..." 导航到项目的 ios/UnityLibrary 目录 确保选中"Create folder references"(创建文件夹引用)选项 点击"Add"按钮 Flutter 3.19.3 ; Flutter Unity Widget 2022.2.1 ; Xcode16.3 ;build version 16E140;pod 1.16.2;