### 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;