hexiaojie vor 7 Monaten
Ursprung
Commit
7d252448e2

+ 20 - 6
GameClient/Assets/Game/Launcher/Platform/QDJHGameManagerInit.cs

@@ -20,14 +20,28 @@ namespace GFGGame.Launcher
             }
         }
 
-        // 调用JS函数的通用方法
+        // // 调用JS函数的通用方法
+        // private void CallJSFunction(string functionName, Dictionary<string, object> parameters)
+        // {
+        //     // 将参数字典转换为JSON字符串
+        //     string jsonParams = JsonUtility.ToJson(parameters);
+        //
+        //     // 调用JS函数
+        //     Application.ExternalCall(functionName, jsonParams);
+        // }
+
         private void CallJSFunction(string functionName, Dictionary<string, object> parameters)
         {
-            // 将参数字典转换为JSON字符串
-            string jsonParams =JsonUtility.ToJson(parameters);
-
-            // 调用JS函数
-            Application.ExternalCall(functionName, jsonParams);
+            string jsonParams = JsonUtility.ToJson(parameters ?? new Dictionary<string, object>());
+            Debug.Log($"CallJSFunction {functionName}: {jsonParams}");
+            
+#if UNITY_WEBGL && !UNITY_EDITOR
+    // 调用JSLib方法
+    JH_CallJSFunction(functionName, jsonParams);
+#else
+            // 非WebGL环境模拟调用(如编辑器)
+            Debug.Log($"[模拟] 调用 {functionName}: {jsonParams}");
+#endif
         }
 
         /// <summary>

+ 8 - 0
GameClient/Assets/Plugins/WebGL.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5344fd6e493d58f459128780457871f0
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 18 - 0
GameClient/Assets/Plugins/WebGL/JHWebGL.jslib

@@ -0,0 +1,18 @@
+mergeInto(LibraryManager.library, {
+    // 通用JS调用方法
+    JH_CallJSFunction: function(functionName, jsonParams) {
+        const fnName = UTF8ToString(functionName);
+        const paramsStr = UTF8ToString(jsonParams);
+        
+        try {
+            const params = JSON.parse(paramsStr);
+            if (typeof window[fnName] === 'function') {
+                window[fnName](params);
+            } else {
+                console.error(`JS函数 ${fnName} 未定义`);
+            }
+        } catch (e) {
+            console.error('调用JS函数失败:', e);
+        }
+    }
+});

+ 32 - 0
GameClient/Assets/Plugins/WebGL/JHWebGL.jslib.meta

@@ -0,0 +1,32 @@
+fileFormatVersion: 2
+guid: 41702a5f5a84e20468c2f79bc0a3707f
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  - first:
+      WebGL: WebGL
+    second:
+      enabled: 1
+      settings: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: