import Flutter import UIKit import UnityLibrary /// Unity视图控制器 class UnityViewController: UIViewController { // Unity框架引用 weak var unityFramework: UnityFramework? init(unityFramework: UnityFramework?) { self.unityFramework = unityFramework super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() // 将Unity视图添加为子视图 if let unityView = unityFramework?.appController()?.rootView { view.addSubview(unityView) unityView.frame = view.bounds unityView.autoresizingMask = [.flexibleWidth, .flexibleHeight] } } } /// Unity视图工厂类,用于创建Flutter平台视图 class UnityViewFactory: NSObject, FlutterPlatformViewFactory { // 注册表用于消息传递 private var registrar: FlutterPluginRegistrar // Unity框架引用 private weak var unityFramework: UnityFramework? init(registrar: FlutterPluginRegistrar, unityFramework: UnityFramework?) { self.registrar = registrar self.unityFramework = unityFramework super.init() } // 创建Flutter平台视图 func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?) -> FlutterPlatformView { return UnityFlutterPlatformView(frame: frame, viewId: viewId, arguments: args, registrar: registrar, unityFramework: unityFramework) } // 支持StandardMessageCodec func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol { return FlutterStandardMessageCodec.sharedInstance() } } /// Unity Flutter平台视图 class UnityFlutterPlatformView: NSObject, FlutterPlatformView { // Unity视图控制器 private var unityViewController: UnityViewController init(frame: CGRect, viewId: Int64, arguments args: Any?, registrar: FlutterPluginRegistrar, unityFramework: UnityFramework?) { unityViewController = UnityViewController(unityFramework: unityFramework) unityViewController.view.frame = frame super.init() } // 返回视图 func view() -> UIView { return unityViewController.view } }