最近项目遇到这个需求,头大。

先理下思路

unity 调用 iOS 的流程,我想应该大家都熟悉,也就是 C# 调用 OC 的方法百度下,成堆。

iOS 小组件,是 iOS 14.0 以后的产物。Android上早就有了。问题苹果小组件是 swift 开发的。

第一个问题来了,C# 怎么调用 swift方法???

经过一系列研究百度+Google),哈哈。最后决定 C# -> OC -> swift .

以下是研究成果(GitHub上高手如云):

下载一个 UnityIosPlugin 插件文章结束放有链接(嘿嘿)。

解压后,将UnityIosPlugin 文件夹放在 Assets/Plugins/iOS 文件夹下。毕竟是一个 Plugin 嘛。

文件夹内有 Source 和 Editor 两个文件夹

先说说 Editor 文件夹内的 SwiftPostProcess.cs

// 只需要注意和修改两行代码
// UnityPlugin-Bridging-Header.h路径由你放置 UnityIosPlugin 文件夹位置决定的
// Libraries/ 就是 Unity 工程下的 Assets/
proj.SetBuildProperty(targetGuid, "SWIFT_OBJC_BRIDGING_HEADER", "Libraries/Plugins/iOS/UnityIosPlugin/Source/UnityPlugin-Bridging-Header.h");
// 这行就别改了
proj.SetBuildProperty(targetGuid, "SWIFT_OBJC_INTERFACE_HEADER_NAME", "UnityFramework-Swift.h");

再说说 Source 文件夹内的三个文件文件名后缀不要修改

其中  UnityPlugin-Bridging-Header.h 桥接用的,也就是swift调用oc的类的时候,将oc头文件添加这里。咱可以不用管。

然后 UnityPluginBridge.mm 主要是我们给 C# 调用的。具体的注意事项参看百度。我在里面写了两个方法,仅供参考

最后 UnityPlugin.swift 就是主要的目标文件。UnityPluginBridge里的方法调用UnityPlugin.swif方法

—————————————————————————————————————-

iOS 小组件的添加,在导出 xcode 工程后,按照流程自己添加吧。

https://assetstore.unity.com/packages/slug/240992

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注