diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index eb0ac88..f5fcc71 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -31,7 +31,7 @@ import UnityLibrary } // 初始化Unity框架 - func initUnityFramework() { + private func initUnityFramework() { let unityLoader = UnityFrameworkLoader() unityFramework = unityLoader.loadUnityFramework() @@ -62,10 +62,41 @@ import UnityLibrary private func setupUnityMessageHandlers() { // 创建Unity通信通道 let controller = self.window.rootViewController as? FlutterViewController - let channel = FlutterMethodChannel(name: "com.example.ar_tourism_flutter_unity.unity", binaryMessenger: controller!.binaryMessenger) + let channel = FlutterMethodChannel(name: "com.yourcompany.unity_flutter/unity", binaryMessenger: controller!.binaryMessenger) // 处理Flutter->Unity消息 - // 注意:实际的方法处理已经委托给了UnityPlugin插件处理,这里仅保留与它不冲突的方法 + channel.setMethodCallHandler { [weak self] (call, result) in + guard let self = self else { return } + + switch call.method { + case "openUnity": + // 打开Unity视图 + if let args = call.arguments as? [String: Any], + let sceneName = args["sceneName"] as? String { + self.openUnityScene(sceneName: sceneName) + result(true) + } else { + result(false) + } + case "closeUnity": + // 关闭Unity视图 + self.closeUnity() + result(true) + case "sendMessageToUnity": + // 向Unity发送消息 + if let args = call.arguments as? [String: Any], + let gameObject = args["gameObject"] as? String, + let methodName = args["methodName"] as? String, + let message = args["message"] as? String { + self.sendMessageToUnity(gameObject: gameObject, methodName: methodName, message: message) + result(true) + } else { + result(false) + } + default: + result(FlutterMethodNotImplemented) + } + } } // 打开Unity场景 diff --git a/ios/UnityLibrary.zip b/ios/UnityLibrary.zip new file mode 100644 index 0000000..d998786 Binary files /dev/null and b/ios/UnityLibrary.zip differ diff --git a/ios/UnityLibrary/UnityLibrary.podspec b/ios/UnityLibrary/UnityLibrary.podspec index 8b7289c..6c8a75e 100644 --- a/ios/UnityLibrary/UnityLibrary.podspec +++ b/ios/UnityLibrary/UnityLibrary.podspec @@ -12,17 +12,10 @@ Pod::Spec.new do |s| s.public_header_files = "Classes/**/*.h", "Libraries/**/*.h", "PluginBase/**/*.h" s.resources = "Data/**/*", "*.meta" s.frameworks = "UnityFramework" - s.vendored_frameworks = [ - "Frameworks/UnityFramework.framework", - "Frameworks/com.easyar.sense/Runtime/BindingNR/Apple/iOS/ios-arm64/easyar.framework" - ] - s.vendored_libraries = [ - "Libraries/**/*.a" - ] + s.vendored_frameworks = "Frameworks/UnityFramework.framework" s.xcconfig = { - "FRAMEWORK_SEARCH_PATHS" => "\"${PODS_ROOT}/UnityLibrary/Frameworks\" \"${PODS_ROOT}/UnityLibrary/Frameworks/com.easyar.sense/Runtime/BindingNR/Apple/iOS/ios-arm64\"", - "LIBRARY_SEARCH_PATHS" => "\"${PODS_ROOT}/UnityLibrary/Libraries\"", - "OTHER_LDFLAGS" => "\"$(inherited) -framework UnityFramework -framework easyar\"", + "FRAMEWORK_SEARCH_PATHS" => "\"${PODS_ROOT}/UnityLibrary/Frameworks\"", + "OTHER_LDFLAGS" => "\"$(inherited) -framework UnityFramework \"", "ENABLE_BITCODE" => "NO" } end \ No newline at end of file