hexiaojie 7 месяцев назад
Родитель
Сommit
8ad5589302

+ 262 - 265
GameClient/Assets/Game/HotUpdate/Platform/QDDouYouManager.cs

@@ -1,265 +1,262 @@
-// using System;
-// using ET;
-// using UnityEngine;
-// using GFGGame.Launcher;
-//
-// namespace GFGGame
-// {
-//     public class QDDouYouManager : SingletonBase<QDDouYouManager>
-//     {
-//         public bool isLogining;
-//         public string uid;
-//         public string token;
-//
-//         public void Init()
-//         {
-//             Debug.Log("实例化DouYouSDKListener");
-//             QDDouYouManagerInit.Instance.douYouSDKListener = new DouYouSDKListener();
-//         }
-//
-//         public void Login()
-//         {
-//             // if (!string.IsNullOrEmpty(uid))
-//             // {
-//             //     EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, uid);
-//             //     return;
-//             // }
-//             // if (isLogining) return;
-//             // Debug.Log($"quick Login");
-//             // isLogining = true;
-//             QDDouYouManagerInit.Instance.ShowLogin();
-//         }
-//
-//         public void OnCreateRole()
-//         {
-//             QDManager.PushRoleAction(DouYouRoleLogReportType.CreateRole);
-//         }
-//
-//         public void OnEnterGame()
-//         {
-//             var zoneScene = GameGlobal.zoneScene;
-//             if (zoneScene == null) return;
-//             
-//             if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
-//                 zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
-//             
-//             var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
-//             if (roleInfo == null) return;
-//             
-//             if (GameGlobal.myNumericComponent == null) return;
-//             int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
-//  
-//             if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
-//             if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
-//
-//             string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
-//
-//             QDDouYouManagerInit.Instance.ReportRoleLogin(roleInfo.Id.ToString(), lvl.ToString(), roleInfo.Name,
-//                 roleInfo.ServerId.ToString(), serverName);
-//             QDManager.PushRoleAction(DouYouRoleLogReportType.EnterGame);
-//         }
-//
-//         public void OnQuitToLoginView()
-//         {
-//             Debug.Log($"DouYou OnQuitToLoginView");
-//         }
-//
-//         public void Logout()
-//         {
-//             Debug.Log($"Game.HotUpdate DouYou Logout");
-//             QDDouYouManagerInit.Instance.ShowLogout();
-//         }
-//
-//         public void LoginOutBefore()
-//         {
-//             QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
-//         }
-//
-//         public void Pay(int buyID, int count, string orderID, long price)
-//         {
-//             ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(buyID);
-//             if (shopCfg == null)
-//             {
-//                 Log.Error($"recharge {buyID} config not found!");
-//                 return;
-//             }
-//
-//             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId);
-//             if (itemCfg == null)
-//             {
-//                 Log.Error($"recharge {buyID} itemCfgId:{shopCfg.itemId} config not found!");
-//                 return;
-//             }
-//
-//             var zoneScene = GameGlobal.zoneScene;
-//             if (zoneScene == null) return;
-//             
-//             if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
-//                 zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
-//             
-//             var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
-//             if (roleInfo == null) return;
-//             
-//             if (GameGlobal.myNumericComponent == null) return;
-//             int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
-//  
-//             if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
-//             if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
-//
-//             string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
-//
-//             //自定义参数
-//             string other = orderID + "|gfg|" + roleInfo.Id;
-//             QDDouYouManagerInit.Instance.ShowSwitchPayment(orderID, price.ToString(), buyID.ToString(),
-//                 shopCfg.itemName, string.Empty,
-//                 roleInfo.ServerId.ToString(), serverName, roleInfo.Id.ToString(), roleInfo.Name, lvl.ToString(), other);
-//         }
-//
-//         public void Exit()
-//         {
-//             QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
-//             QDDouYouManagerInit.Instance.ExitApp();
-//         }
-//     }
-//
-//     /// <summary>
-//     /// SDK回调
-//     /// </summary>
-//     public class DouYouSDKListener : IDouYouSDKListener
-//     {
-//         // /// <summary>
-//         // /// 测试消息
-//         // /// </summary>
-//         // /// <param name="message"></param>
-//         // public void ReceiveMessageAb(string message)
-//         // {
-//         //     Debug.Log($"Game.HotUpdate ReceiveMessageAb:{message}");
-//         // }
-//
-//         /// <summary>
-//         /// SDK实例化成功
-//         /// </summary>
-//         /// <param name="message">SDK 实例化成功</param>
-//         public void InitSuccessAb(string message)
-//         {
-//             Debug.Log("Game.HotUpdate InitSuccessAb: " + message);
-//         }
-//
-//         /// <summary>
-//         /// 登录成功 
-//         /// </summary>
-//         /// <param name="message">resUid + "|gfg|" + token</param>
-//         public void LoginSuccessAb(string message)
-//         {
-//             Debug.Log("Game.HotUpdate LoginSuccessAb: " + message);
-//             string[] result = message.Split(new string[] { "|gfg|" }, StringSplitOptions.None);
-//
-//             QDDouYouManager.Instance.isLogining = false;
-//             QDDouYouManager.Instance.uid = result[0];
-//             QDDouYouManager.Instance.token = result[1];
-//             //登录成功的回调
-//             EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, result[0]);
-//         }
-//
-//         /// <summary>
-//         /// 切换账号或退出登录后
-//         /// </summary>
-//         /// <param name="message">退出登录成功!</param>
-//         public void OutLoginSuccessAb(string message)
-//         {
-//             Debug.Log("Game.HotUpdate OutLoginSuccessAb: " + message);
-//             GameController.QuitToLoginView(true);
-//             EventAgent.DispatchEvent(ConstMessage.OUT_LOGIN);
-//         }
-//
-//         /// <summary>
-//         /// 支付失败
-//         /// </summary>
-//         /// <param name="message">code + "|gfg|" + params.toString()</param>
-//         public void PayFailAb(string message)
-//         {
-//             Debug.Log("Game.HotUpdate PayFailAb: " + message);
-//             //改变临时订单状态为失败
-//         }
-//
-//         /// <summary>
-//         /// 支付成功
-//         /// </summary>
-//         /// <param name="message">code + "|gfg|" + params.toString()</param>
-//         public void PaySuccessAb(string message)
-//         {
-//             Debug.Log("Game.HotUpdate PaySuccessAb" + message);
-//             //改变临时订单状态为支付成功
-//             QDManager.PushRoleAction(DouYouRoleLogReportType.Pay);
-//         }
-//
-//         #region SDK 生命周期函数
-//
-//         public void SdkOnStartAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnStartAb:{message}");
-//         }
-//
-//         public void SdkOnPauseAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnPauseAb:{message}");
-//         }
-//
-//         public void SdkOnResumeAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnResumeAb:{message}");
-//         }
-//
-//         public void SdkOnStopAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnStopAb:{message}");
-//         }
-//
-//         public void SdkOnDestroyAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnDestroyAb:{message}");
-//         }
-//
-//         public void SdkOnRestartAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnRestartAb:{message}");
-//         }
-//
-//         public void SdkOnBackPressedAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnBackPressedAb:{message}");
-//         }
-//
-//         public void SdkOnNewIntentAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnNewIntentAb:{message}");
-//         }
-//
-//         public void SdkOnConfigurationChangedAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnConfigurationChangedAb:{message}");
-//         }
-//
-//         public void SdkOnSaveInstanceStateAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnSaveInstanceStateAb:{message}");
-//         }
-//
-//         public void SdkOnActivityResultAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnActivityResultAb:{message}");
-//         }
-//
-//         public void SdkOnRequestPermissionResultAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnRequestPermissionResultAb:{message}");
-//         }
-//
-//         public void SdkOnWindowFocusChangedAb(string message)
-//         {
-//             Debug.Log($"Game.HotUpdate SdkOnWindowFocusChangedAb:{message}");
-//         }
-//
-//         #endregion
-//     }
-// }
+using System;
+using cfg.GfgCfg;
+using ET;
+using UnityEngine;
+using GFGGame.Launcher;
+
+namespace GFGGame
+{
+    public class QDDouYouManager : SingletonBase<QDDouYouManager>
+    {
+        public bool isLogining;
+        public string uid;
+        public string token;
+
+        public void Init()
+        {
+            Debug.Log("实例化DouYouSDKListener");
+            QDJHGameManagerInit.Instance.douYouSDKListener = new DouYouSDKListener();
+        }
+
+        public void Login()
+        {
+            // if (!string.IsNullOrEmpty(uid))
+            // {
+            //     EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, uid);
+            //     return;
+            // }
+            // if (isLogining) return;
+            // Debug.Log($"quick Login");
+            // isLogining = true;
+            QDJHGameManagerInit.Instance.ShowLogin();
+        }
+
+        public void OnCreateRole()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.CreateRole);
+        }
+
+        public void OnEnterGame()
+        {
+            var zoneScene = GameGlobal.zoneScene;
+            if (zoneScene == null) return;
+
+            if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
+                zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
+
+            var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
+            if (roleInfo == null) return;
+
+            if (GameGlobal.myNumericComponent == null) return;
+            int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+
+            if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
+            if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
+
+            string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
+
+            QDJHGameManagerInit.Instance.ReportRoleLogin(roleInfo.Id.ToString(), lvl.ToString(), roleInfo.Name,
+                roleInfo.ServerId.ToString(), serverName);
+            QDManager.PushRoleAction(DouYouRoleLogReportType.EnterGame);
+        }
+
+        public void OnQuitToLoginView()
+        {
+            Debug.Log($"DouYou OnQuitToLoginView");
+        }
+
+        public void Logout()
+        {
+            Debug.Log($"Game.HotUpdate DouYou Logout");
+            QDJHGameManagerInit.Instance.ShowLogout();
+        }
+
+        public void LoginOutBefore()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
+        }
+
+        public void Pay(int buyID, int count, string orderID, long price)
+        {
+            ShopCfg shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(buyID);
+            if (shopCfg == null)
+            {
+                Log.Error($"recharge {buyID} config not found!");
+                return;
+            }
+
+            ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(shopCfg.ItemId);
+
+            if (itemCfg == null)
+            {
+                Log.Error($"recharge {buyID} itemCfgId:{shopCfg.ItemId} config not found!");
+                return;
+            }
+
+            var zoneScene = GameGlobal.zoneScene;
+            if (zoneScene == null) return;
+
+            if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
+                zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
+
+            var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
+            if (roleInfo == null) return;
+
+            if (GameGlobal.myNumericComponent == null) return;
+            int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+
+            if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
+            if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
+
+            string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
+
+            //自定义参数
+            string other = orderID + "|gfg|" + roleInfo.Id;
+            QDJHGameManagerInit.Instance.ShowSwitchPayment(orderID, price.ToString(), buyID.ToString(),
+                shopCfg.ItemName, string.Empty,
+                roleInfo.ServerId.ToString(), serverName, roleInfo.Id.ToString(), roleInfo.Name, lvl.ToString(), other);
+        }
+
+        public void Exit()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
+            QDDouYouManagerInit.Instance.ExitApp();
+        }
+    }
+
+    /// <summary>
+    /// SDK回调
+    /// </summary>
+    public class JHGameSDKListener : IJHGameSDKListener
+    {
+        //通知Unity准备支付
+        public void OnRechargeStartAb(string message)
+        {
+        }
+
+        //支付完成后通知Unity
+        public void OnRechargeCompleteAb(string message)
+        {
+        }
+
+        //支付错误
+        public void OnRechargeErrorAb(string message)
+        {
+        }
+
+        //创建角色实例化完成
+        public void OnCreateRoleStartAb(string message)
+        {
+        }
+
+        //创建角色结果
+        public void OnCreateRoleCompleteAb(string message)
+        {
+        }
+
+        //创建角色错误
+        public void OnCreateRoleErrorAb(string message)
+        {
+        }
+
+        //角色登录实例化完成
+        public void OnLoginRoleStartAb(string message)
+        {
+        }
+
+        //角色登录结果
+        public void OnLoginRoleCompleteAb(string message)
+        {
+        }
+
+        //角色登录错误
+        public void OnLoginRoleErrorAb(string message)
+        {
+        }
+
+        //角色升级回调实例化完成
+        public void OnUpgradeRoleStartAb(string message)
+        {
+        }
+
+        public void OnUpgradeRoleCompleteAb(string message)
+        {
+        }
+
+        public void OnUpgradeRoleErrorAb(string message)
+        {
+        }
+
+        //顶号
+        public void OnRepeatLoginStartAb(string message)
+        {
+        }
+
+        public void OnRepeatLoginCompleteAb(string message)
+        {
+        }
+
+        public void OnRepeatLoginErrorAb(string message)
+        {
+        }
+
+        public void OnCallIcpBeianStartAb(string message)
+        {
+        }
+
+        public void OnCallIcpBeianCompleteAb(string message)
+        {
+        }
+
+        public void OnCallIcpBeianErrorAb(string message)
+        {
+        }
+        
+
+        /// <summary>
+        /// 登录成功 
+        /// </summary>
+        /// <param name="message">resUid + "|gfg|" + token</param>
+        public void LoginSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate LoginSuccessAb: " + message);
+            string[] result = message.Split(new string[] { "|gfg|" }, StringSplitOptions.None);
+
+            QDDouYouManager.Instance.isLogining = false;
+            QDDouYouManager.Instance.uid = result[0];
+            QDDouYouManager.Instance.token = result[1];
+            //登录成功的回调
+            EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, result[0]);
+        }
+
+        /// <summary>
+        /// 切换账号或退出登录后
+        /// </summary>
+        /// <param name="message">退出登录成功!</param>
+        public void OutLoginSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate OutLoginSuccessAb: " + message);
+            GameController.QuitToLoginView(true);
+            EventAgent.DispatchEvent(ConstMessage.OUT_LOGIN);
+        }
+
+        /// <summary>
+        /// 支付失败
+        /// </summary>
+        /// <param name="message">code + "|gfg|" + params.toString()</param>
+        public void PayFailAb(string message)
+        {
+            Debug.Log("Game.HotUpdate PayFailAb: " + message);
+            //改变临时订单状态为失败
+        }
+
+        /// <summary>
+        /// 支付成功
+        /// </summary>
+        /// <param name="message">code + "|gfg|" + params.toString()</param>
+        public void PaySuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate PaySuccessAb" + message);
+        }
+    }
+}

+ 59 - 0
GameClient/Assets/Game/HotUpdate/Utils/WebUrlUtil.cs

@@ -0,0 +1,59 @@
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public static class WebUrlUtil
+    {
+        // 从URL解析SDK参数
+        public static Dictionary<string, object> ParseSDKParamsFromUrl(string url)
+        {
+            Dictionary<string, object> paramsDict = new Dictionary<string, object>();
+
+            // 简单的URL参数解析
+            int queryIndex = url.IndexOf('?');
+            if (queryIndex != -1)
+            {
+                string query = url.Substring(queryIndex + 1);
+                string[] pairs = query.Split('&');
+
+                foreach (string pair in pairs)
+                {
+                    string[] keyValue = pair.Split('=');
+                    if (keyValue.Length == 2)
+                    {
+                        string key = keyValue[0];
+                        string value = keyValue[1];
+
+                        // URL解码(简单实现,实际可能需要更完整的解码)
+                        value = value.Replace("%20", " ");
+
+                        // 根据SDK文档,我们知道可能的参数
+                        switch (key)
+                        {
+                            case "user_id":
+                                paramsDict["user_id"] = value;
+                                break;
+                            case "user_name":
+                                paramsDict["user_name"] = value;
+                                break;
+                            case "uuid":
+                                paramsDict["uuid"] = value;
+                                break;
+                            case "sign":
+                                paramsDict["sign"] = value;
+                                break;
+                            case "timestamp":
+                                paramsDict["timestamp"] = value;
+                                break;
+                            case "cp_ext":
+                                paramsDict["cp_ext"] = value;
+                                break;
+                        }
+                    }
+                }
+            }
+
+            return paramsDict;
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Utils/WebUrlUtil.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 6549edcf20a34982b682593964d66e6d
+timeCreated: 1749982950

+ 0 - 43
GameClient/Assets/Game/Launcher/Platform/IDouYouSDKListener.cs

@@ -1,43 +0,0 @@
-// namespace GFGGame.Launcher
-// {
-//     public interface IDouYouSDKListener
-//     {
-//         //public void ReceiveMessageAb(string message);
-//
-//         public void InitSuccessAb(string message);
-//
-//         public void LoginSuccessAb(string message);
-//
-//         public void OutLoginSuccessAb(string message);
-//
-//         public void PayFailAb(string message);
-//
-//         public void PaySuccessAb(string message);
-//
-//         public void SdkOnStartAb(string message);
-//
-//         public void SdkOnPauseAb(string message);
-//
-//         public void SdkOnResumeAb(string message);
-//
-//         public void SdkOnStopAb(string message);
-//
-//         public void SdkOnDestroyAb(string message);
-//
-//         public void SdkOnRestartAb(string message);
-//
-//         public void SdkOnBackPressedAb(string message);
-//
-//         public void SdkOnNewIntentAb(string message);
-//
-//         public void SdkOnConfigurationChangedAb(string message);
-//
-//         public void SdkOnSaveInstanceStateAb(string message);
-//
-//         public void SdkOnActivityResultAb(string message);
-//
-//         public void SdkOnRequestPermissionResultAb(string message);
-//
-//         public void SdkOnWindowFocusChangedAb(string message);
-//     }
-// }

+ 27 - 0
GameClient/Assets/Game/Launcher/Platform/IJHGameSDKListener.cs

@@ -0,0 +1,27 @@
+namespace GFGGame.Launcher
+{
+    public interface IJHGameSDKListener
+    {
+        //public void ReceiveMessageAb(string message);
+
+        public void OnRechargeStartAb(string message);
+        public void OnRechargeCompleteAb(string message);
+        public void OnRechargeErrorAb(string message);
+        public void OnCreateRoleStartAb(string message);
+        public void OnCreateRoleCompleteAb(string message);
+        public void OnCreateRoleErrorAb(string message);
+        public void OnLoginRoleStartAb(string message);
+        public void OnLoginRoleCompleteAb(string message);
+        public void OnLoginRoleErrorAb(string message);
+        public void OnUpgradeRoleStartAb(string message);
+        public void OnUpgradeRoleCompleteAb(string message);
+        public void OnUpgradeRoleErrorAb(string message);
+        public void OnRepeatLoginStartAb(string message);
+        public void OnRepeatLoginCompleteAb(string message);
+        public void OnRepeatLoginErrorAb(string message);
+        public void OnCallIcpBeianStartAb(string message);
+        public void OnCallIcpBeianCompleteAb(string message);
+
+        public void OnCallIcpBeianErrorAb(string message);
+    }
+}

+ 0 - 0
GameClient/Assets/Game/Launcher/Platform/IDouYouSDKListener.cs.meta → GameClient/Assets/Game/Launcher/Platform/IJHGameSDKListener.cs.meta


+ 0 - 301
GameClient/Assets/Game/Launcher/Platform/QDDouYouManagerInit.cs

@@ -1,301 +0,0 @@
-// using DouYouSdk;
-// using UniFramework.Event;
-// using UnityEngine;
-//
-// namespace GFGGame.Launcher
-// {
-//     public class QDDouYouManagerInit : SingletonBase<QDDouYouManagerInit>
-//     {
-//         public IDouYouSDKListener douYouSDKListener;
-//
-//         private static AndroidJavaClass _unityPlayerClass;
-//
-//         private static AndroidJavaObject _douYouMainActivity;
-//
-//         public void InitSDK(string adId)
-//         {
-//             if (_unityPlayerClass == null)
-//             {
-//                 _unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-//             }
-//
-//             if (_douYouMainActivity == null)
-//             {
-//                 _douYouMainActivity = _unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
-//             }
-//
-//             DouYouSDKHandler eventHandler = GameObject.Find("DouYouSDKGameObject")?.GetComponent<DouYouSDKHandler>();
-//             if (eventHandler == null)
-//             {
-//                 GameObject gameObject = new GameObject("DouYouSDKGameObject");
-//                 gameObject.AddComponent<DouYouSDKHandler>();
-//                 GameObject.DontDestroyOnLoad(gameObject);
-//             }
-//
-//             Instance.CallDouYouMainActivity("initDouYou", adId);
-//         }
-//
-//         //调用桥接的 DouYouMainActivity.java 对象的方法
-//         private void CallDouYouMainActivity(string functionName, params object[] args)
-//         {
-//             _douYouMainActivity?.Call(functionName, args);
-//         }
-//
-//         /// <summary>
-//         /// 显示登录界面
-//         /// </summary>
-//         public void ShowLogin()
-//         {
-//             Instance.CallDouYouMainActivity("extShowLogin");
-//         }
-//
-//         /// <summary>
-//         /// 角色登录数据上报
-//         /// </summary>
-//         /// <param name="id">角色ID</param>
-//         /// <param name="level">角色等级</param>
-//         /// <param name="nickname">角色名称</param>
-//         /// <param name="sid">区服ID</param>
-//         /// <param name="serverName">区服名称</param>
-//         public void ReportRoleLogin(string id, string level, string nickname, string sid, string serverName)
-//         {
-//             Instance.CallDouYouMainActivity("extReportRoleLogin", id, level, nickname, sid, serverName);
-//         }
-//
-//         /// <summary>
-//         /// 角色数据上报
-//         /// </summary>
-//         /// <param name="logType">场景(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)</param>
-//         /// <param name="id">角色ID</param>
-//         /// <param name="level">角色等级</param>
-//         /// <param name="nickname">角色名称</param>
-//         /// <param name="sid">区服ID</param>
-//         /// <param name="serverName">区服名称</param>
-//         public void ReportRole(int logType, string id, string level, string nickname, string sid, string serverName)
-//         {
-//             Instance.CallDouYouMainActivity("extReportRole", logType, id, level, nickname, sid, serverName);
-//         }
-//
-//         /// <summary>
-//         /// 退出登录
-//         /// </summary>
-//         public void ShowLogout()
-//         {
-//             Instance.CallDouYouMainActivity("extShowLogout");
-//         }
-//
-//         /// <summary>
-//         /// 退出app
-//         /// </summary>
-//         public void ExitApp()
-//         {
-//             Instance.CallDouYouMainActivity("extExitApp");
-//         }
-//
-//         /// <summary>
-//         /// 调起支付
-//         /// </summary>
-//         /// <param name="orderId">订单号</param>
-//         /// <param name="orderMoney">订单金额(元)</param>
-//         /// <param name="productId">产品ID</param>
-//         /// <param name="productName">产品名称</param>
-//         /// <param name="productDesc">产品描述</param>
-//         /// <param name="roleServiceId">区服ID</param>
-//         /// <param name="serviceName">区服名称</param>
-//         /// <param name="roleId">角色ID</param>
-//         /// <param name="roleName">角色名称</param>
-//         /// <param name="roleLevel">角色等级</param>
-//         /// <param name="other">透传参数</param>
-//         public void ShowSwitchPayment(string orderId, string orderMoney, string productId, string productName,
-//             string productDesc, string roleServiceId, string serviceName, string roleId, string roleName,
-//             string roleLevel, string other)
-//         {
-//             Instance.CallDouYouMainActivity("extShowSwitchPayment", orderId, orderMoney, productId, productName,
-//                 productDesc, roleServiceId, serviceName, roleId, roleName, roleLevel, other);
-//         }
-//
-//         /// <summary>
-//         /// cp激励广告订单id  登录后用户uid  角色id
-//         /// </summary>
-//         public void OpenGroMoreAD()
-//         {
-//             Instance.CallDouYouMainActivity("extOpenGroMoreAD");
-//         }
-//
-//         public class DouYouSDKHandler : AbDouYouSDKHandler
-//         {
-//             /// <summary>
-//             /// 测试消息
-//             /// </summary>
-//             /// <param name="message"></param>
-//             public override void ReceiveMessageAb(string message)
-//             {
-//                 Debug.Log($"ReceiveMessageAb:{message}");
-//             }
-//
-//             /// <summary>
-//             /// SDK实例化成功
-//             /// </summary>
-//             /// <param name="message">SDK 实例化成功</param>
-//             public override void InitSuccessAb(string message)
-//             {
-//                 UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true });
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.InitSuccessAb(message);
-//                 Debug.Log($"InitSuccess:{message}");
-//             }
-//
-//             /// <summary>
-//             /// 登录成功 
-//             /// </summary>
-//             /// <param name="message">resUid + "|gfg|" + token</param>
-//             public override void LoginSuccessAb(string message)
-//             {
-//                 Debug.Log("LoginSuccessAb: " + message);
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.LoginSuccessAb(message);
-//             }
-//
-//             /// <summary>
-//             /// 切换账号或退出登录后
-//             /// </summary>
-//             /// <param name="message">退出登录成功!</param>
-//             public override void OutLoginSuccessAb(string message)
-//             {
-//                 Debug.Log("OutLoginSuccessAb: " + message);
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.OutLoginSuccessAb(message);
-//             }
-//
-//             /// <summary>
-//             /// 支付失败
-//             /// </summary>
-//             /// <param name="message">code + "|gfg|" + params.toString()</param>
-//             public override void PayFailAb(string message)
-//             {
-//                 Debug.Log("PayFailAb: " + message);
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.PayFailAb(message);
-//             }
-//
-//             /// <summary>
-//             /// 支付成功
-//             /// </summary>
-//             /// <param name="message">code + "|gfg|" + params.toString()</param>
-//             public override void PaySuccessAb(string message)
-//             {
-//                 Debug.Log("PaySuccessAb" + message);
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.PaySuccessAb(message);
-//             }
-//
-//             #region SDK 生命周期函数
-//
-//             public override void SdkOnStartAb(string message)
-//             {
-//                 Debug.Log($"SdkOnStartAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnStartAb(message);
-//             }
-//
-//             public override void SdkOnPauseAb(string message)
-//             {
-//                 Debug.Log($"SdkOnPauseAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnPauseAb(message);
-//             }
-//
-//             public override void SdkOnResumeAb(string message)
-//             {
-//                 Debug.Log($"SdkOnResumeAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnResumeAb(message);
-//             }
-//
-//             public override void SdkOnStopAb(string message)
-//             {
-//                 Debug.Log($"SdkOnStopAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnStopAb(message);
-//             }
-//
-//             public override void SdkOnDestroyAb(string message)
-//             {
-//                 Debug.Log($"SdkOnDestroyAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnDestroyAb(message);
-//             }
-//
-//             public override void SdkOnRestartAb(string message)
-//             {
-//                 Debug.Log($"SdkOnRestartAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnRestartAb(message);
-//             }
-//
-//             public override void SdkOnBackPressedAb(string message)
-//             {
-//                 Debug.Log($"SdkOnBackPressedAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnBackPressedAb(message);
-//             }
-//
-//             public override void SdkOnNewIntentAb(string message)
-//             {
-//                 Debug.Log($"SdkOnNewIntentAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnNewIntentAb(message);
-//             }
-//
-//             public override void SdkOnConfigurationChangedAb(string message)
-//             {
-//                 Debug.Log($"SdkOnConfigurationChangedAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnConfigurationChangedAb(message);
-//             }
-//
-//             public override void SdkOnSaveInstanceStateAb(string message)
-//             {
-//                 Debug.Log($"SdkOnSaveInstanceStateAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnSaveInstanceStateAb(message);
-//             }
-//
-//             public override void SdkOnActivityResultAb(string message)
-//             {
-//                 Debug.Log($"SdkOnActivityResultAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnActivityResultAb(message);
-//             }
-//
-//             public override void SdkOnRequestPermissionResultAb(string message)
-//             {
-//                 Debug.Log($"SdkOnRequestPermissionResultAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnRequestPermissionResultAb(message);
-//             }
-//
-//             public override void SdkOnWindowFocusChangedAb(string message)
-//             {
-//                 Debug.Log($"SdkOnWindowFocusChangedAb:{message}");
-//                 QDDouYouManagerInit.Instance.douYouSDKListener?.SdkOnWindowFocusChangedAb(message);
-//             }
-//
-//             #endregion
-//         }
-//     }
-//
-//     /// <summary>
-//     /// 场景(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)
-//     /// </summary>
-//     public enum DouYouRoleLogReportType
-//     {
-//         /// <summary>
-//         /// 进入游戏
-//         /// </summary>
-//         EnterGame = 1,
-//
-//         /// <summary>
-//         /// 创建角色
-//         /// </summary>
-//         CreateRole = 2,
-//
-//         /// <summary>
-//         /// 角色升级
-//         /// </summary>
-//         LevelUp = 3,
-//
-//         /// <summary>
-//         /// 退出
-//         /// </summary>
-//         ExitGame = 4,
-//
-//         /// <summary>
-//         /// 充值
-//         /// </summary>
-//         Pay = 5
-//     }
-// }

+ 349 - 0
GameClient/Assets/Game/Launcher/Platform/QDJHGameManagerInit.cs

@@ -0,0 +1,349 @@
+using System.Collections.Generic;
+using JHGameSDK;
+using Unity.Plastic.Newtonsoft.Json;
+using UnityEngine;
+
+namespace GFGGame.Launcher
+{
+    #region MyRegion
+
+    // // 辅助类:可序列化的字典
+    // [System.Serializable]
+    // public class SerializableDictionary
+    // {
+    //     public List<string> keys = new List<string>();
+    //     public List<object> values = new List<object>();
+    //
+    //     public SerializableDictionary(Dictionary<string, object> dict)
+    //     {
+    //         foreach (var pair in dict)
+    //         {
+    //             keys.Add(pair.Key);
+    //             values.Add(pair.Value);
+    //         }
+    //     }
+    // }
+
+    #endregion
+
+    public class QDJHGameManagerInit : SingletonBase<QDJHGameManagerInit>
+    {
+        public IJHGameSDKListener _jhGameSDKListener;
+
+        // SDK 参数
+        public static string UserId { get; private set; }
+        public static string UserName { get; private set; }
+        public static string Uuid { get; private set; }
+        public static string Sign { get; private set; }
+        public static string Timestamp { get; private set; }
+        public static string CpExt { get; private set; }
+
+        public void InitSDK()
+        {
+            JHGameSDKHandler eventHandler = GameObject.Find("JHGameSDKGameObject")?.GetComponent<JHGameSDKHandler>();
+            if (eventHandler == null)
+            {
+                GameObject gameObject = new GameObject("JHGameSDKGameObject");
+                gameObject.AddComponent<JHGameSDKHandler>();
+                GameObject.DontDestroyOnLoad(gameObject);
+            }
+        }
+
+        // 调用JS函数的通用方法
+        private void CallJSFunction(string functionName, Dictionary<string, object> parameters)
+        {
+            // 将参数字典转换为JSON字符串
+            string jsonParams = JsonConvert.SerializeObject(parameters);
+
+            // 调用JS函数
+            Application.ExternalCall(functionName, jsonParams);
+        }
+
+        // 从URL获取SDK参数并初始化
+        public void InitializeSDKParams(Dictionary<string, object> paramsDict)
+        {
+            if (paramsDict.ContainsKey("user_id")) UserId = paramsDict["user_id"].ToString();
+            if (paramsDict.ContainsKey("user_name")) UserName = paramsDict["user_name"].ToString();
+            if (paramsDict.ContainsKey("uuid")) Uuid = paramsDict["uuid"].ToString();
+            if (paramsDict.ContainsKey("sign")) Sign = paramsDict["sign"].ToString();
+            if (paramsDict.ContainsKey("timestamp")) Timestamp = paramsDict["timestamp"].ToString();
+            if (paramsDict.ContainsKey("cp_ext")) CpExt = paramsDict["cp_ext"].ToString();
+
+            Debug.Log("SDK参数初始化完成");
+            Debug.Log($"UserID: {UserId}, UserName: {UserName}, Uuid: {Uuid}, CpExt:{CpExt}");
+        }
+
+        // 支付相关
+        public void Recharge(int amount, string productName, string notifyUrl, string serverId,
+            string serverName, string roleName, string roleId, string roleLevel,
+            string vipLevel, string cpOrderId, string balance, string extra = "",
+            string fighting = "")
+        {
+            // 构建支付参数
+            var parameters = new Dictionary<string, object>
+            {
+                { "amount", amount },
+                { "productName", productName },
+                { "notifyUrl", notifyUrl },
+                { "serverId", serverId },
+                { "serverName", serverName },
+                { "roleName", roleName },
+                { "roleId", roleId },
+                { "roleLevel", roleLevel },
+                { "vipLevel", vipLevel },
+                { "cpOrderId", cpOrderId },
+                { "balance", balance },
+                { "extra", extra },
+                { "fighting", fighting }
+            };
+
+            // 调用JS的JHRecharge函数
+            CallJSFunction("JHRecharge", parameters);
+        }
+
+        // 创建角色
+        public void CreateRole(string roleId, string roleName, int roleLevel, string serverId,
+            string serverName, int vipLevel, string fighting, string balance,
+            string roleCTime = "")
+        {
+            // 构建角色创建参数
+            var parameters = new Dictionary<string, object>
+            {
+                { "roleId", roleId },
+                { "roleName", roleName },
+                { "roleLevel", roleLevel },
+                { "serverId", serverId },
+                { "serverName", serverName },
+                { "vipLevel", vipLevel },
+                { "fighting", fighting },
+                { "balance", balance },
+                { "roleCTime", roleCTime }
+            };
+
+            // 调用JS的JHCreateRole函数
+            CallJSFunction("JHCreateRole", parameters);
+        }
+
+        // 角色登录
+        public void LoginRole(string roleId, string roleName, int roleLevel, string serverId,
+            string serverName, int vipLevel, string fighting, string balance,
+            string roleCTime = "")
+        {
+            // 构建角色登录参数
+            var parameters = new Dictionary<string, object>
+            {
+                { "roleId", roleId },
+                { "roleName", roleName },
+                { "roleLevel", roleLevel },
+                { "serverId", serverId },
+                { "serverName", serverName },
+                { "vipLevel", vipLevel },
+                { "fighting", fighting },
+                { "balance", balance },
+                { "roleCTime", roleCTime }
+            };
+
+            // 调用JS的JHLoginRole函数
+            CallJSFunction("JHLoginRole", parameters);
+        }
+
+        // 角色升级
+        public void UpgradeRole(string roleId, string roleName, int roleLevel, string serverId,
+            string serverName, int vipLevel, string fighting, string balance,
+            string roleCTime = "")
+        {
+            // 构建角色升级参数
+            var parameters = new Dictionary<string, object>
+            {
+                { "roleId", roleId },
+                { "roleName", roleName },
+                { "roleLevel", roleLevel },
+                { "serverId", serverId },
+                { "serverName", serverName },
+                { "vipLevel", vipLevel },
+                { "fighting", fighting },
+                { "balance", balance },
+                { "roleCTime", roleCTime }
+            };
+
+            // 调用JS的JHUpgradeRole函数
+            CallJSFunction("JHUpgradeRole", parameters);
+        }
+
+        // 顶号处理
+        public void RepeatLogin()
+        {
+            // 调用JS的JHRepeatLogin函数
+            CallJSFunction("JHRepeatLogin", new Dictionary<string, object>());
+        }
+
+        // 备案跳转
+        public void CallIcpBeian()
+        {
+            // 调用JS的JHCallIcpBeian函数
+            CallJSFunction("JHCallIcpBeian", new Dictionary<string, object>());
+        }
+        
+        public class JHGameSDKHandler : AbJHGameSDKHandler
+        {
+            /// <summary>
+            /// 测试消息
+            /// </summary>
+            /// <param name="message"></param>
+            public override void ReceiveMessageAb(string message)
+            {
+                Debug.Log($"ReceiveMessageAb:{message}");
+            }
+
+            //通知Unity准备支付
+            public override void OnRechargeStartAb(string message)
+            {
+                Debug.Log($"OnRechargeStartAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeStartAb(message);
+            }
+
+            //支付完成后通知Unity
+            public override void OnRechargeCompleteAb(string message)
+            {
+                Debug.Log($"OnRechargeCompleteAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeCompleteAb(message);
+            }
+
+            //支付错误
+            public override void OnRechargeErrorAb(string message)
+            {
+                Debug.Log($"OnRechargeErrorAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeErrorAb(message);
+            }
+
+            //创建角色实例化完成
+            public override void OnCreateRoleStartAb(string message)
+            {
+                Debug.Log($"OnCreateRoleStartAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleStartAb(message);
+            }
+
+            //创建角色结果
+            public override void OnCreateRoleCompleteAb(string message)
+            {
+                Debug.Log($"OnCreateRoleCompleteAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleCompleteAb(message);
+            }
+
+            //创建角色错误
+            public override void OnCreateRoleErrorAb(string message)
+            {
+                Debug.Log($"OnCreateRoleErrorAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleErrorAb(message);
+            }
+
+            //角色登录实例化完成
+            public override void OnLoginRoleStartAb(string message)
+            {
+                Debug.Log($"OnLoginRoleStartAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleStartAb(message);
+            }
+
+            //角色登录结果
+            public override void OnLoginRoleCompleteAb(string message)
+            {
+                Debug.Log($"OnLoginRoleCompleteAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleCompleteAb(message);
+            }
+
+            //角色登录错误
+            public override void OnLoginRoleErrorAb(string message)
+            {
+                Debug.Log($"OnLoginRoleErrorAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleErrorAb(message);
+            }
+
+            //角色升级回调实例化完成
+            public override void OnUpgradeRoleStartAb(string message)
+            {
+                Debug.Log($"OnUpgradeRoleStartAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleStartAb(message);
+            }
+
+            public override void OnUpgradeRoleCompleteAb(string message)
+            {
+                Debug.Log($"OnUpgradeRoleCompleteAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleCompleteAb(message);
+            }
+
+            public override void OnUpgradeRoleErrorAb(string message)
+            {
+                Debug.Log($"OnUpgradeRoleErrorAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleErrorAb(message);
+            }
+
+            //顶号
+            public override void OnRepeatLoginStartAb(string message)
+            {
+                Debug.Log($"OnRepeatLoginStartAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginStartAb(message);
+            }
+
+            public override void OnRepeatLoginCompleteAb(string message)
+            {
+                Debug.Log($"OnRepeatLoginCompleteAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginCompleteAb(message);
+            }
+
+            public override void OnRepeatLoginErrorAb(string message)
+            {
+                Debug.Log($"OnRepeatLoginErrorAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginErrorAb(message);
+            }
+
+            public override void OnCallIcpBeianStartAb(string message)
+            {
+                Debug.Log($"OnCallIcpBeianStartAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianStartAb(message);
+            }
+
+            public override void OnCallIcpBeianCompleteAb(string message)
+            {
+                Debug.Log($"OnCallIcpBeianCompleteAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianCompleteAb(message);
+            }
+
+            public override void OnCallIcpBeianErrorAb(string message)
+            {
+                Debug.Log($"OnCallIcpBeianErrorAb:{message}");
+                QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianErrorAb(message);
+            }
+        }
+    }
+
+    /// <summary>
+    /// 场景(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)
+    /// </summary>
+    public enum DouYouRoleLogReportType
+    {
+        /// <summary>
+        /// 进入游戏
+        /// </summary>
+        EnterGame = 1,
+
+        /// <summary>
+        /// 创建角色
+        /// </summary>
+        CreateRole = 2,
+
+        /// <summary>
+        /// 角色升级
+        /// </summary>
+        LevelUp = 3,
+
+        /// <summary>
+        /// 退出
+        /// </summary>
+        ExitGame = 4,
+
+        /// <summary>
+        /// 充值
+        /// </summary>
+        Pay = 5
+    }
+}

+ 0 - 0
GameClient/Assets/Game/Launcher/Platform/QDDouYouManagerInit.cs.meta → GameClient/Assets/Game/Launcher/Platform/QDJHGameManagerInit.cs.meta


+ 0 - 187
GameClient/Assets/ThirdParty/DouYou/AbDouYouSDKHandler.cs

@@ -1,187 +0,0 @@
-// using UnityEngine;
-//
-// namespace DouYouSdk
-// {
-//     public abstract class AbDouYouSDKHandler : MonoBehaviour
-//     {
-//         public abstract void ReceiveMessageAb(string message);
-//
-//         public abstract void InitSuccessAb(string message);
-//
-//         public abstract void LoginSuccessAb(string message);
-//
-//         public abstract void OutLoginSuccessAb(string message);
-//
-//         public abstract void PayFailAb(string message);
-//
-//         public abstract void PaySuccessAb(string message);
-//
-//         public abstract void SdkOnStartAb(string message);
-//
-//         public abstract void SdkOnPauseAb(string message);
-//
-//         public abstract void SdkOnResumeAb(string message);
-//
-//         public abstract void SdkOnStopAb(string message);
-//
-//         public abstract void SdkOnDestroyAb(string message);
-//
-//         public abstract void SdkOnRestartAb(string message);
-//
-//         public abstract void SdkOnBackPressedAb(string message);
-//
-//         public abstract void SdkOnNewIntentAb(string message);
-//
-//         public abstract void SdkOnConfigurationChangedAb(string message);
-//
-//         public abstract void SdkOnSaveInstanceStateAb(string message);
-//
-//         public abstract void SdkOnActivityResultAb(string message);
-//
-//         public abstract void SdkOnRequestPermissionResultAb(string message);
-//
-//         public abstract void SdkOnWindowFocusChangedAb(string message);
-//
-//         /// <summary>
-//         /// 测试消息
-//         /// </summary>
-//         /// <param name="message"></param>
-//         public void ReceiveMessage(string message)
-//         {
-//             Debug.Log($"ReceiveMessage:{message}");
-//             ReceiveMessageAb(message);
-//         }
-//
-//         /// <summary>
-//         /// SDK实例化成功
-//         /// </summary>
-//         /// <param name="message">SDK 实例化成功</param>
-//         public void InitSuccess(string message)
-//         {
-//             Debug.Log($"InitSuccess:{message}");
-//             InitSuccessAb(message);
-//         }
-//
-//         /// <summary>
-//         /// 登录成功 
-//         /// </summary>
-//         /// <param name="message">resUid + "|gfg|" + token</param>
-//         public void LoginSuccess(string message)
-//         {
-//             Debug.Log($"LoginSuccess:{message}");
-//             LoginSuccessAb(message);
-//         }
-//
-//         /// <summary>
-//         /// 切换账号或退出登录后
-//         /// </summary>
-//         /// <param name="message">退出登录成功!</param>
-//         public void OutLoginSuccess(string message)
-//         {
-//             Debug.Log($"OutLoginSuccess:{message}");
-//             OutLoginSuccessAb(message);
-//         }
-//
-//         /// <summary>
-//         /// 支付失败
-//         /// </summary>
-//         /// <param name="message">code + "|gfg|" + params.toString()</param>
-//         public void PayFail(string message)
-//         {
-//             Debug.Log($"PayFail:{message}");
-//             PayFailAb(message);
-//         }
-//
-//         /// <summary>
-//         /// 支付成功
-//         /// </summary>
-//         /// <param name="message">code + "|gfg|" + params.toString()</param>
-//         public void PaySuccess(string message)
-//         {
-//             Debug.Log($"PaySuccess:{message}");
-//             PaySuccessAb(message);
-//         }
-//
-//         #region SDK 生命周期函数
-//
-//         public void SdkOnStart(string message)
-//         {
-//             Debug.Log($"SdkOnStart:{message}");
-//             SdkOnStartAb(message);
-//         }
-//
-//         public void SdkOnPause(string message)
-//         {
-//             Debug.Log($"SdkOnPause:{message}");
-//             SdkOnPauseAb(message);
-//         }
-//
-//         public void SdkOnResume(string message)
-//         {
-//             Debug.Log($"SdkOnResume:{message}");
-//             SdkOnResumeAb(message);
-//         }
-//
-//         public void SdkOnStop(string message)
-//         {
-//             Debug.Log($"SdkOnStop:{message}");
-//             SdkOnStopAb(message);
-//         }
-//
-//         public void SdkOnDestroy(string message)
-//         {
-//             Debug.Log($"SdkOnDestroy:{message}");
-//             SdkOnDestroyAb(message);
-//         }
-//
-//         public void SdkOnRestart(string message)
-//         {
-//             Debug.Log($"SdkOnRestart:{message}");
-//             SdkOnRestartAb(message);
-//         }
-//
-//         public void SdkOnBackPressed(string message)
-//         {
-//             Debug.Log($"SdkOnBackPressed:{message}");
-//             SdkOnBackPressedAb(message);
-//         }
-//
-//         public void SdkOnNewIntent(string message)
-//         {
-//             Debug.Log($"SdkOnNewIntent:{message}");
-//             SdkOnNewIntentAb(message);
-//         }
-//
-//         public void SdkOnConfigurationChanged(string message)
-//         {
-//             Debug.Log($"SdkOnConfigurationChanged:{message}");
-//             SdkOnConfigurationChangedAb(message);
-//         }
-//
-//         public void SdkOnSaveInstanceState(string message)
-//         {
-//             Debug.Log($"SdkOnSaveInstanceState:{message}");
-//             SdkOnSaveInstanceStateAb(message);
-//         }
-//
-//         public void SdkOnActivityResult(string message)
-//         {
-//             Debug.Log($"SdkOnActivityResult:{message}");
-//             SdkOnActivityResultAb(message);
-//         }
-//
-//         public void SdkOnRequestPermissionResult(string message)
-//         {
-//             Debug.Log($"SdkOnRequestPermissionResult:{message}");
-//             SdkOnRequestPermissionResultAb(message);
-//         }
-//
-//         public void SdkOnWindowFocusChanged(string message)
-//         {
-//             Debug.Log($"SdkOnWindowFocusChanged:{message}");
-//             SdkOnWindowFocusChangedAb(message);
-//         }
-//
-//         #endregion
-//     }
-// }

+ 0 - 0
GameClient/Assets/ThirdParty/DouYou.meta → GameClient/Assets/ThirdParty/JHGame.meta


+ 167 - 0
GameClient/Assets/ThirdParty/JHGame/AbJHGameSDKHandler.cs

@@ -0,0 +1,167 @@
+using UnityEngine;
+
+namespace JHGameSDK
+{
+    public abstract class AbJHGameSDKHandler : MonoBehaviour
+    {
+        public abstract void ReceiveMessageAb(string message);
+
+        public abstract void OnRechargeStartAb(string message);
+        public abstract void OnRechargeCompleteAb(string message);
+        public abstract void OnRechargeErrorAb(string message);
+        public abstract void OnCreateRoleStartAb(string message);
+        public abstract void OnCreateRoleCompleteAb(string message);
+        public abstract void OnCreateRoleErrorAb(string message);
+        public abstract void OnLoginRoleStartAb(string message);
+        public abstract void OnLoginRoleCompleteAb(string message);
+        public abstract void OnLoginRoleErrorAb(string message);
+        public abstract void OnUpgradeRoleStartAb(string message);
+        public abstract void OnUpgradeRoleCompleteAb(string message);
+        public abstract void OnUpgradeRoleErrorAb(string message);
+        public abstract void OnRepeatLoginStartAb(string message);
+        public abstract void OnRepeatLoginCompleteAb(string message);
+        public abstract void OnRepeatLoginErrorAb(string message);
+        public abstract void OnCallIcpBeianStartAb(string message);
+        public abstract void OnCallIcpBeianCompleteAb(string message);
+
+        public abstract void OnCallIcpBeianErrorAb(string message);
+
+
+        /// <summary>
+        /// 测试消息
+        /// </summary>
+        /// <param name="message"></param>
+        public void ReceiveMessage(string message)
+        {
+            Debug.Log($"ReceiveMessage:{message}");
+            ReceiveMessageAb(message);
+        }
+        
+        // 接收来自JS的回调
+        public void OnRechargeStart(string jsonParams)
+        {
+            Debug.Log("支付开始: " + jsonParams);
+            // 处理支付开始的逻辑
+            OnRechargeStartAb(jsonParams);
+        }
+
+        public void OnRechargeComplete(string jsonParams)
+        {
+            Debug.Log("支付完成: " + jsonParams);
+            // 处理支付完成的逻辑
+            OnRechargeCompleteAb(jsonParams);
+        }
+
+        public void OnRechargeError(string jsonParams)
+        {
+            Debug.Log("支付错误: " + jsonParams);
+            // 处理支付错误的逻辑
+            OnRechargeErrorAb(jsonParams);
+        }
+
+        public void OnCreateRoleStart(string jsonParams)
+        {
+            Debug.Log("创建角色开始: " + jsonParams);
+            // 处理创建角色开始的逻辑
+            OnCreateRoleStartAb(jsonParams);
+        }
+
+        public void OnCreateRoleComplete(string jsonParams)
+        {
+            Debug.Log("创建角色完成: " + jsonParams);
+            // 处理创建角色完成的逻辑
+            OnCreateRoleCompleteAb(jsonParams);
+        }
+
+        public void OnCreateRoleError(string jsonParams)
+        {
+            Debug.Log("创建角色错误: " + jsonParams);
+            // 处理创建角色错误的逻辑
+            OnCreateRoleErrorAb(jsonParams);
+        }
+
+        public void OnLoginRoleStart(string jsonParams)
+        {
+            Debug.Log("角色登录开始: " + jsonParams);
+            // 处理角色登录开始的逻辑
+            OnLoginRoleStartAb(jsonParams);
+        }
+
+        public void OnLoginRoleComplete(string jsonParams)
+        {
+            Debug.Log("角色登录完成: " + jsonParams);
+            // 处理角色登录完成的逻辑
+            OnLoginRoleCompleteAb(jsonParams);
+        }
+
+        public void OnLoginRoleError(string jsonParams)
+        {
+            Debug.Log("角色登录错误: " + jsonParams);
+            // 处理角色登录错误的逻辑
+            OnLoginRoleErrorAb(jsonParams);
+        }
+
+        public void OnUpgradeRoleStart(string jsonParams)
+        {
+            Debug.Log("角色升级开始: " + jsonParams);
+            // 处理角色升级开始的逻辑
+            OnUpgradeRoleStartAb(jsonParams);
+        }
+
+        public void OnUpgradeRoleComplete(string jsonParams)
+        {
+            Debug.Log("角色升级完成: " + jsonParams);
+            // 处理角色升级完成的逻辑
+            OnUpgradeRoleCompleteAb(jsonParams);
+        }
+
+        public void OnUpgradeRoleError(string jsonParams)
+        {
+            Debug.Log("角色升级错误: " + jsonParams);
+            // 处理角色升级错误的逻辑
+            OnUpgradeRoleErrorAb(jsonParams);
+        }
+
+        public void OnRepeatLoginStart(string jsonParams)
+        {
+            Debug.Log("顶号处理开始: " + jsonParams);
+            // 处理顶号开始的逻辑
+            OnRepeatLoginStartAb(jsonParams);
+        }
+
+        public void OnRepeatLoginComplete(string jsonParams)
+        {
+            Debug.Log("顶号处理完成: " + jsonParams);
+            // 处理顶号完成的逻辑
+            OnRepeatLoginCompleteAb(jsonParams);
+        }
+
+        public void OnRepeatLoginError(string jsonParams)
+        {
+            Debug.Log("顶号处理错误: " + jsonParams);
+            // 处理顶号错误的逻辑
+            OnRepeatLoginErrorAb(jsonParams);
+        }
+
+        public void OnCallIcpBeianStart(string jsonParams)
+        {
+            Debug.Log("备案跳转开始: " + jsonParams);
+            // 处理备案跳转开始的逻辑
+            OnCallIcpBeianStartAb(jsonParams);
+        }
+
+        public void OnCallIcpBeianComplete(string jsonParams)
+        {
+            Debug.Log("备案跳转完成: " + jsonParams);
+            // 处理备案跳转完成的逻辑
+            OnCallIcpBeianCompleteAb(jsonParams);
+        }
+
+        public void OnCallIcpBeianError(string jsonParams)
+        {
+            Debug.Log("备案跳转错误: " + jsonParams);
+            // 处理备案跳转错误的逻辑
+            OnCallIcpBeianErrorAb(jsonParams);
+        }
+    }
+}

+ 0 - 0
GameClient/Assets/ThirdParty/DouYou/AbDouYouSDKHandler.cs.meta → GameClient/Assets/ThirdParty/JHGame/AbJHGameSDKHandler.cs.meta


+ 8 - 0
GameClient/Assets/WebGLTemplates.meta

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

+ 8 - 0
GameClient/Assets/WebGLTemplates/MyCustomTemplate.meta

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

+ 278 - 0
GameClient/Assets/WebGLTemplates/MyCustomTemplate/index.html

@@ -0,0 +1,278 @@
+<!DOCTYPE html>
+<html lang="en-us">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <title>Unity WebGL Player | 万世镜</title>
+    <link rel="shortcut icon" href="TemplateData/favicon.ico">
+    <link rel="stylesheet" href="TemplateData/style.css">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+    <meta name="screen-orientation" content="portrait">
+    <!-- 引入H5SDK -->
+    <script type="text/javascript" src="https://cdn.jihuigame.com/sdk/h5sdk-1.0.3.js"></script>
+  </head>
+  <body>
+    <div id="unity-container" class="unity-desktop">
+      <canvas id="unity-canvas" width=960 height=600></canvas>
+      <div id="unity-loading-bar">
+        <div id="unity-logo"></div>
+        <div id="unity-progress-bar-empty">
+          <div id="unity-progress-bar-full"></div>
+        </div>
+      </div>
+      <div id="unity-warning"> </div>
+      <div id="unity-footer">
+        <div id="unity-webgl-logo"></div>
+        <div id="unity-fullscreen-button"></div>
+        <div id="unity-build-title">万世镜</div>
+      </div>
+    </div>
+    
+    <!-- 添加SDK交互的div -->
+    <div id="sdk-container" style="display:none;"></div>
+    
+    <script>
+    window.onload = function() {
+        if (screen.orientation && screen.orientation.lock) {
+            screen.orientation.lock('portrait').catch(e => console.log(e));
+        }
+        // 调整Canvas尺寸适配竖屏
+        var canvas = document.querySelector('canvas');
+        if (canvas) {
+            canvas.style.width = '100%';
+            canvas.style.height = '100vh';
+        }
+    };
+    </script>
+    
+    <script>
+      var container = document.querySelector("#unity-container");
+      var canvas = document.querySelector("#unity-canvas");
+      var loadingBar = document.querySelector("#unity-loading-bar");
+      var progressBarFull = document.querySelector("#unity-progress-bar-full");
+      var fullscreenButton = document.querySelector("#unity-fullscreen-button");
+      var warningBanner = document.querySelector("#unity-warning");
+      
+      // SDK相关的全局变量
+      var sdkParams = null;
+      
+      // 从URL获取SDK参数
+      function getSDKParamsFromUrl() {
+        var urlParams = new URLSearchParams(window.location.search);
+        return {
+          user_id: urlParams.get('user_id'),
+          user_name: urlParams.get('user_name'),
+          uuid: urlParams.get('uuid'),
+          sign: urlParams.get('sign'),
+          timestamp: urlParams.get('timestamp'),
+          cp_ext: urlParams.get('cp_ext')
+        };
+      }
+      
+      // 初始化SDK参数
+      function initSDKParams() {
+        sdkParams = getSDKParamsFromUrl();
+        console.log("SDK Params:", sdkParams);
+        
+        // 这里可以添加将参数传递给Unity的逻辑
+        // 例如通过UnityInstance.SendMessage
+      }
+      
+      // 显示临时消息横幅
+      function unityShowBanner(msg, type) {
+        function updateBannerVisibility() {
+          warningBanner.style.display = warningBanner.children.length ? 'block' : 'none';
+        }
+        var div = document.createElement('div');
+        div.innerHTML = msg;
+        warningBanner.appendChild(div);
+        if (type == 'error') div.style = 'background: red; padding: 10px;';
+        else {
+          if (type == 'warning') div.style = 'background: yellow; padding: 10px;';
+          setTimeout(function() {
+            warningBanner.removeChild(div);
+            updateBannerVisibility();
+          }, 5000);
+        }
+        updateBannerVisibility();
+      }
+
+      var buildUrl = "Build";
+      var loaderUrl = buildUrl + "/webgl.loader.js";
+      var config = {
+        dataUrl: buildUrl + "/webgl.data.gz",
+        frameworkUrl: buildUrl + "/webgl.framework.js.gz",
+        codeUrl: buildUrl + "/webgl.wasm.gz",
+        streamingAssetsUrl: "StreamingAssets",
+        companyName: "gfg",
+        productName: "万世镜",
+        productVersion: "1.0",
+        showBanner: unityShowBanner,
+      };
+
+      if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
+        container.className = "unity-mobile";
+        config.devicePixelRatio = 1;
+        unityShowBanner('WebGL builds are not supported on mobile devices.');
+      } else {
+        canvas.style.width = "960px";
+        canvas.style.height = "600px";
+      }
+      canvas.style.background = "url('" + buildUrl + "/webgl.jpg') center / cover";
+      loadingBar.style.display = "block";
+
+      var script = document.createElement("script");
+      script.src = loaderUrl;
+      script.onload = () => {
+        createUnityInstance(canvas, config, (progress) => {
+          progressBarFull.style.width = 100 * progress + "%";
+        }).then((unityInstance) => {
+          loadingBar.style.display = "none";
+          fullscreenButton.onclick = () => {
+            unityInstance.SetFullscreen(1);
+          };
+          
+          // Unity实例加载完成后初始化SDK
+          initSDKParams();
+          
+          // 这里可以添加将unityInstance保存为全局变量的代码
+          // window.unityInstance = unityInstance;
+          
+        }).catch((message) => {
+          alert(message);
+        });
+      };
+      document.body.appendChild(script);
+    </script>
+    
+    <!-- 添加SDK交互的JavaScript代码 -->
+    <script>
+    // 这部分代码将在Unity加载完成后执行
+    function setupSDKCallbacks(unityInstance) {
+      // 支付回调示例
+      window.JHRecharge = function(params) {
+        console.log("调用支付:", params);
+        // 这里可以添加支付前的Unity交互逻辑
+        // 例如通知Unity准备支付
+        if (unityInstance) {
+          unityInstance.SendMessage('SDKManager', 'OnRechargeStart', JSON.stringify(params));
+        }
+        
+        // 调用SDK支付
+        JHGameSDK.recharge(params).then(function(res) {
+          console.log('支付结果:', res);
+          // 支付完成后通知Unity
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnRechargeComplete', JSON.stringify(res));
+          }
+        }).catch(function(error) {
+          console.error('支付错误:', error);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnRechargeError', JSON.stringify(error));
+          }
+        });
+      };
+      
+      // 创建角色回调
+      window.JHCreateRole = function(params) {
+        console.log("创建角色:", params);
+        if (unityInstance) {
+          unityInstance.SendMessage('SDKManager', 'OnCreateRoleStart', JSON.stringify(params));
+        }
+        
+        JHGameSDK.createRole(params).then(function(res) {
+          console.log('创建角色结果:', res);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnCreateRoleComplete', JSON.stringify(res));
+          }
+        }).catch(function(error) {
+          console.error('创建角色错误:', error);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnCreateRoleError', JSON.stringify(error));
+          }
+        });
+      };
+      
+      // 角色登录回调
+      window.JHLoginRole = function(params) {
+        console.log("角色登录:", params);
+        if (unityInstance) {
+          unityInstance.SendMessage('SDKManager', 'OnLoginRoleStart', JSON.stringify(params));
+        }
+        
+        JHGameSDK.loginRole(params).then(function(res) {
+          console.log('角色登录结果:', res);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnLoginRoleComplete', JSON.stringify(res));
+          }
+        }).catch(function(error) {
+          console.error('角色登录错误:', error);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnLoginRoleError', JSON.stringify(error));
+          }
+        });
+      };
+      
+      // 角色升级回调
+      window.JHUpgradeRole = function(params) {
+        console.log("角色升级:", params);
+        if (unityInstance) {
+          unityInstance.SendMessage('SDKManager', 'OnUpgradeRoleStart', JSON.stringify(params));
+        }
+        
+        JHGameSDK.upgradeRole(params).then(function(res) {
+          console.log('角色升级结果:', res);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnUpgradeRoleComplete', JSON.stringify(res));
+          }
+        }).catch(function(error) {
+          console.error('角色升级错误:', error);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnUpgradeRoleError', JSON.stringify(error));
+          }
+        });
+      };
+      
+      // 顶号回调
+      window.JHRepeatLogin = function() {
+        console.log("顶号处理");
+        if (unityInstance) {
+          unityInstance.SendMessage('SDKManager', 'OnRepeatLoginStart', '');
+        }
+        
+        JHGameSDK.repeatLogin().then(function(res) {
+          console.log('顶号结果:', res);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnRepeatLoginComplete', JSON.stringify(res));
+          }
+        }).catch(function(error) {
+          console.error('顶号错误:', error);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnRepeatLoginError', JSON.stringify(error));
+          }
+        });
+      };
+      
+      // 备案跳转回调
+      window.JHCallIcpBeian = function() {
+        console.log("备案跳转");
+        if (unityInstance) {
+          unityInstance.SendMessage('SDKManager', 'OnCallIcpBeianStart', '');
+        }
+        
+        JHGameSDK.call({target:"icpbeian"}).then((res) => {
+          console.log('备案跳转结果:', res);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnCallIcpBeianComplete', JSON.stringify(res));
+          }
+        }).catch(function(error) {
+          console.error('备案跳转错误:', error);
+          if (unityInstance) {
+            unityInstance.SendMessage('SDKManager', 'OnCallIcpBeianError', JSON.stringify(error));
+          }
+        });
+      };
+    }
+    </script>
+  </body>
+</html>

+ 7 - 0
GameClient/Assets/WebGLTemplates/MyCustomTemplate/index.html.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6e062233bdc7a9c42b0770bded5b60b9
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 0
GameClient/GameClient.sln.DotSettings.user

@@ -11,6 +11,7 @@
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIBufferWriter_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fadmin_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa5006ea2ea344a8e8c71a2eb982aadc024518_003Fef_003F2e83f7a0_003FIBufferWriter_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIEnumerator_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F3789ee403a53437cbb6b5d9ab6311f51573620_003F4e_003Faad6c3b2_003FIEnumerator_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIPEndPoint_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fd6e153aa051345dc96d9a55ee3adc812360448_003Fa6_003F47eb89a0_003FIPEndPoint_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonUtility_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F02365bcde6734ac8ae92f51eed8d7a5a3200_003F58_003F2dcb948b_003FJsonUtility_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F3789ee403a53437cbb6b5d9ab6311f51573620_003Fa3_003F60d291b6_003FList_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALogType_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F683a2b31bf9142429c44f02c75dbc6c913ce00_003F75_003Fd87ba9d0_003FLogType_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMemberInfo_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F9c2967a135e648bdb993c5397a44991b573620_003F69_003F4bdfd6bb_003FMemberInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>

+ 4 - 4
GameClient/ProjectSettings/ProjectSettings.asset

@@ -19,8 +19,8 @@ PlayerSettings:
   m_SplashScreenBackgroundColor: {r: 0, g: 0, b: 0, a: 1}
   m_ShowUnitySplashScreen: 1
   m_ShowUnitySplashLogo: 1
-  m_SplashScreenOverlayOpacity: 0
-  m_SplashScreenAnimation: 0
+  m_SplashScreenOverlayOpacity: 0.5
+  m_SplashScreenAnimation: 1
   m_SplashScreenLogoStyle: 1
   m_SplashScreenDrawMode: 0
   m_SplashScreenBackgroundAnimationZoom: 0
@@ -82,7 +82,7 @@ PlayerSettings:
   androidFullscreenMode: 1
   defaultIsNativeResolution: 1
   macRetinaSupport: 1
-  runInBackground: 0
+  runInBackground: 1
   captureSingleScreen: 0
   muteOtherAudioSources: 0
   Prepare IOS For Recording: 0
@@ -773,7 +773,7 @@ PlayerSettings:
   webGLDebugSymbols: 0
   webGLEmscriptenArgs: 
   webGLModulesDirectory: 
-  webGLTemplate: APPLICATION:Default
+  webGLTemplate: APPLICATION:Minimal
   webGLAnalyzeBuildSize: 0
   webGLUseEmbeddedResources: 0
   webGLCompressionFormat: 1