You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Facebook Unity SDK至13.2.0后出现NiceVibrations相关Xcode解析错误

问题分析与解决办法

核心原因

Facebook Unity SDK 13.2.0版本的FBUnitySDKDelegate.h会主动引用UnityFramework-Swift.h,而NiceVibrations插件生成的HapticCallback类型仅在Swift代码中定义,未添加Objective-C兼容标记,导致Objective-C编写的FB SDK代码无法识别该类型,触发"Expected a type"编译错误。旧版11.0 SDK未触发这个引用链,因此无此问题。

可行解决方案

  • 方案1:让HapticCallback兼容Objective-C
    找到NiceVibrations插件中定义HapticCallback的Swift文件,给这个类型添加@objc修饰符:

    @objc typealias HapticCallback = () -> Void
    

    若HapticCallback是协议类型,同样需要添加@objc:

    @objc protocol HapticCallback {
        // 协议方法
    }
    

    重新导出Xcode工程后,UnityFramework-Swift.h会生成Objective-C可识别的类型声明,FB代码即可正常编译。

  • 方案2:调整头文件引用逻辑
    打开FBUnityInterface.mm,确保UnityFramework-Swift.h在FBUnitySDKDelegate.h之前被导入;或者修改FBUnitySDKDelegate.h,用前向声明替代直接导入Swift头文件:

    @class HapticCallback;
    

    然后在FBUnitySDKDelegate.mm(如果存在)中再导入UnityFramework-Swift.h,避免编译阶段提前解析未定义的类型。

  • 方案3:临时应急修改(不推荐长期使用)
    若赶项目进度,可在导出Xcode工程后,手动修改UnityFramework-Swift.h中的报错代码,将HapticCallback替换为Objective-C原生的块类型:

    + (void)RegisterHapticEngineFinishedCallbackWithCallback:(void(^ _Nonnull)(void))callback;
    + (void)RegisterHapticEngineResetCallbackWithCallback:(void(^ _Nonnull)(void))callback;
    + (void)RegisterHapticEngineErrorCallbackWithCallback:(void(^ _Nonnull)(void))callback;
    

    注意:每次重新导出Xcode工程都需要重复此操作,仅适合临时解决问题。

内容的提问来源于stack exchange,提问作者threedollarbill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:46:15