| | |
| | | // 热更侧 SDKDouyinImpl 只做普通方法调用,等同于 DouyinPlatform 调 TT.InitSDK。 |
| | | // |
| | | // |
| | | // 【不做平台宏裁剪】整个类始终编译(含 Editor)。 |
| | | // Editor 下 SDKDouyinImpl 仍会引用本类(SyncType / Enabled 等),裁掉会编译失败; |
| | | // 是否真的调 JS 由 Enabled(内含 IsJsRuntime)运行时判断,Editor 下天然为 false, |
| | | // 不会触及任何 extern,因此 DllImport 声明在 Editor 下无害。 |
| | | // 【整个类始终编译,但 P/Invoke 必须按平台裁剪】 |
| | | // SDKDouyinImpl 在所有平台(含 Editor)都会引用本类(SyncType / Enabled 等), |
| | | // 所以类本身不能整体裁掉,是否真的调 JS 由 Enabled(内含 IsJsRuntime)运行时判断。 |
| | | // 但 DllImport("__Internal") 的 extern 只能存在于 WebGL:jslib 是 JS 层, |
| | | // Unity 只把它编进 WebGL 产物;其它平台 IL2CPP 仍会为 extern 生成对 |
| | | // Xingwan_* 原生符号的引用,链接期找不到实现,于是 iOS 报 |
| | | // "Undefined symbol: _Xingwan_Init" 等 5 个错误。 |
| | | // 故 extern 用 #if UNITY_WEBGL 包住,其余平台提供同签名托管桩。 |
| | | // ============================================================================ |
| | | |
| | | using System; |
| | |
| | | } |
| | | |
| | | // ================================================================ |
| | | // jslib 声明:Assets/Plugins/Xingwan/XingwanTTGameSdk.jslib |
| | | // jslib 声明:Assets/Plugins/Xingwan/XingwanTTGameSdk.jslib(仅 WebGL) |
| | | // ================================================================ |
| | | |
| | | #if UNITY_WEBGL && !UNITY_EDITOR |
| | | [DllImport("__Internal")] |
| | | private static extern void Xingwan_Init(string accessKeyId, string clientKeySecret, XingwanStringCallback cb); |
| | | |
| | |
| | | |
| | | [DllImport("__Internal")] |
| | | private static extern int Xingwan_IsReady(); |
| | | #else |
| | | // 非 WebGL(Editor / iOS / Android …):没有 jslib,用同签名托管桩替代 extern。 |
| | | // 少了它,IL2CPP 会生成对 Xingwan_* 原生符号的引用,链接期报 Undefined symbol。 |
| | | // 正常流程走不到这里(Enabled / IsJsRuntime 已按运行时平台拦截);万一走到了, |
| | | // 调用点自带的 try/catch 会把异常转成 Fail 结果,不会卡到超时。 |
| | | private static void Xingwan_Init(string accessKeyId, string clientKeySecret, XingwanStringCallback cb) |
| | | => throw new NotSupportedException("星玩 SDK 仅支持 WebGL"); |
| | | |
| | | private static void Xingwan_Login(XingwanStringCallback cb) |
| | | => throw new NotSupportedException("星玩 SDK 仅支持 WebGL"); |
| | | |
| | | private static void Xingwan_Pay(string payJson, XingwanStringCallback cb) |
| | | => throw new NotSupportedException("星玩 SDK 仅支持 WebGL"); |
| | | |
| | | private static void Xingwan_SyncData(string syncJson, XingwanStringCallback cb) |
| | | => throw new NotSupportedException("星玩 SDK 仅支持 WebGL"); |
| | | |
| | | private static int Xingwan_IsReady() |
| | | => throw new NotSupportedException("星玩 SDK 仅支持 WebGL"); |
| | | #endif |
| | | |
| | | // ================================================================ |
| | | // 反向 P/Invoke 包装:IL2CPP 为这些静态方法生成函数指针,jslib 才能 dynCall 回来 |