QDJHGameManagerInit.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. using System.Collections.Generic;
  2. using JHGameSDK;
  3. using UnityEngine;
  4. namespace GFGGame.Launcher
  5. {
  6. public class QDJHGameManagerInit : SingletonBase<QDJHGameManagerInit>
  7. {
  8. public IJHGameSDKListener _jhGameSDKListener;
  9. // SDK 参数
  10. public void InitSDK()
  11. {
  12. JHGameSDKHandler eventHandler = GameObject.Find("JHGameSDKGameObject")?.GetComponent<JHGameSDKHandler>();
  13. if (eventHandler == null)
  14. {
  15. GameObject gameObject = new GameObject("JHGameSDKGameObject");
  16. gameObject.AddComponent<JHGameSDKHandler>();
  17. GameObject.DontDestroyOnLoad(gameObject);
  18. }
  19. }
  20. // 调用JS函数的通用方法
  21. private void CallJSFunction(string functionName, Dictionary<string, object> parameters)
  22. {
  23. // 将参数字典转换为JSON字符串
  24. string jsonParams =JsonUtility.ToJson(parameters);
  25. // 调用JS函数
  26. Application.ExternalCall(functionName, jsonParams);
  27. }
  28. /// <summary>
  29. /// 支付相关
  30. /// </summary>
  31. /// <param name="amount">充值金额 单位为分</param>
  32. /// <param name="cpProductId">商品 ID</param>
  33. /// <param name="productName">游戏货币名(如元宝,金币)</param>
  34. /// <param name="notifyUrl">充值回调地址</param>
  35. /// <param name="serverId">用户角色所在服 id</param>
  36. /// <param name="serverName">用户角色所在服务器名</param>
  37. /// <param name="roleName">角色名字</param>
  38. /// <param name="roleId">角色 id</param>
  39. /// <param name="roleLevel">角色等级</param>
  40. /// <param name="vipLevel">Vip 等级</param>
  41. /// <param name="cpOrderId">研发订单号</param>
  42. /// <param name="balance">玩家余额</param>
  43. /// <param name="extra">透传参数字段(原样返回)</param>
  44. /// <param name="fighting">战力</param>
  45. public void Recharge(int amount, string cpProductId, string productName, string notifyUrl, string serverId,
  46. string serverName, string roleName, string roleId, string roleLevel,
  47. string vipLevel, string cpOrderId, string balance, string extra = "",
  48. string fighting = "")
  49. {
  50. // 构建支付参数
  51. var parameters = new Dictionary<string, object>
  52. {
  53. { "amount", amount },
  54. { "cpProductId", cpProductId },
  55. { "productName", productName },
  56. { "notifyUrl", notifyUrl },
  57. { "serverId", serverId },
  58. { "serverName", serverName },
  59. { "roleName", roleName },
  60. { "roleId", roleId },
  61. { "roleLevel", roleLevel },
  62. { "vipLevel", vipLevel },
  63. { "cpOrderId", cpOrderId },
  64. { "balance", balance },
  65. { "extra", extra },
  66. { "fighting", fighting }
  67. };
  68. // 调用JS的JHRecharge函数
  69. CallJSFunction("JHRecharge", parameters);
  70. }
  71. /// <summary>
  72. /// 创建角色
  73. /// </summary>
  74. /// <param name="roleId">角色 id</param>
  75. /// <param name="roleName">角色名</param>
  76. /// <param name="roleLevel">角色等级</param>
  77. /// <param name="serverId">角色所在服 id</param>
  78. /// <param name="serverName">角色所在服名</param>
  79. /// <param name="vipLevel">角色 vip 等级</param>
  80. /// <param name="fighting">战力值 (若无传””)</param>
  81. /// <param name="balance">玩家余额</param>
  82. /// <param name="roleCTime">创角时间</param>
  83. public void CreateRole(string roleId, string roleName, int roleLevel, string serverId,
  84. string serverName, int vipLevel, string fighting, string balance,
  85. string roleCTime = "")
  86. {
  87. // 构建角色创建参数
  88. var parameters = new Dictionary<string, object>
  89. {
  90. { "roleId", roleId },
  91. { "roleName", roleName },
  92. { "roleLevel", roleLevel },
  93. { "serverId", serverId },
  94. { "serverName", serverName },
  95. { "vipLevel", vipLevel },
  96. { "fighting", fighting },
  97. { "balance", balance },
  98. { "roleCTime", roleCTime }
  99. };
  100. // 调用JS的JHCreateRole函数
  101. CallJSFunction("JHCreateRole", parameters);
  102. }
  103. // 角色登录
  104. public void LoginRole(string roleId, string roleName, int roleLevel, string serverId,
  105. string serverName, int vipLevel, string fighting, string balance,
  106. string roleCTime = "")
  107. {
  108. // 构建角色登录参数
  109. var parameters = new Dictionary<string, object>
  110. {
  111. { "roleId", roleId },
  112. { "roleName", roleName },
  113. { "roleLevel", roleLevel },
  114. { "serverId", serverId },
  115. { "serverName", serverName },
  116. { "vipLevel", vipLevel },
  117. { "fighting", fighting },
  118. { "balance", balance },
  119. { "roleCTime", roleCTime }
  120. };
  121. // 调用JS的JHLoginRole函数
  122. CallJSFunction("JHLoginRole", parameters);
  123. }
  124. // 角色升级
  125. public void UpgradeRole(string roleId, string roleName, int roleLevel, string serverId,
  126. string serverName, int vipLevel, string fighting, string balance,
  127. string roleCTime = "")
  128. {
  129. // 构建角色升级参数
  130. var parameters = new Dictionary<string, object>
  131. {
  132. { "roleId", roleId },
  133. { "roleName", roleName },
  134. { "roleLevel", roleLevel },
  135. { "serverId", serverId },
  136. { "serverName", serverName },
  137. { "vipLevel", vipLevel },
  138. { "fighting", fighting },
  139. { "balance", balance },
  140. { "roleCTime", roleCTime }
  141. };
  142. // 调用JS的JHUpgradeRole函数
  143. CallJSFunction("JHUpgradeRole", parameters);
  144. }
  145. // 顶号处理
  146. public void RepeatLogin()
  147. {
  148. // 调用JS的JHRepeatLogin函数
  149. CallJSFunction("JHRepeatLogin", new Dictionary<string, object>());
  150. }
  151. // 备案跳转
  152. public void CallIcpBeian()
  153. {
  154. // 调用JS的JHCallIcpBeian函数
  155. CallJSFunction("JHCallIcpBeian", new Dictionary<string, object>());
  156. }
  157. public class JHGameSDKHandler : AbJHGameSDKHandler
  158. {
  159. /// <summary>
  160. /// 测试消息
  161. /// </summary>
  162. /// <param name="message"></param>
  163. public override void ReceiveMessageAb(string message)
  164. {
  165. Debug.Log($"ReceiveMessageAb:{message}");
  166. }
  167. //通知Unity准备支付
  168. public override void OnRechargeStartAb(string message)
  169. {
  170. Debug.Log($"OnRechargeStartAb:{message}");
  171. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeStartAb(message);
  172. }
  173. //支付完成后通知Unity
  174. public override void OnRechargeCompleteAb(string message)
  175. {
  176. Debug.Log($"OnRechargeCompleteAb:{message}");
  177. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeCompleteAb(message);
  178. }
  179. //支付错误
  180. public override void OnRechargeErrorAb(string message)
  181. {
  182. Debug.Log($"OnRechargeErrorAb:{message}");
  183. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeErrorAb(message);
  184. }
  185. //创建角色实例化完成
  186. public override void OnCreateRoleStartAb(string message)
  187. {
  188. Debug.Log($"OnCreateRoleStartAb:{message}");
  189. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleStartAb(message);
  190. }
  191. //创建角色结果
  192. public override void OnCreateRoleCompleteAb(string message)
  193. {
  194. Debug.Log($"OnCreateRoleCompleteAb:{message}");
  195. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleCompleteAb(message);
  196. }
  197. //创建角色错误
  198. public override void OnCreateRoleErrorAb(string message)
  199. {
  200. Debug.Log($"OnCreateRoleErrorAb:{message}");
  201. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleErrorAb(message);
  202. }
  203. //角色登录实例化完成
  204. public override void OnLoginRoleStartAb(string message)
  205. {
  206. Debug.Log($"OnLoginRoleStartAb:{message}");
  207. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleStartAb(message);
  208. }
  209. //角色登录结果
  210. public override void OnLoginRoleCompleteAb(string message)
  211. {
  212. Debug.Log($"OnLoginRoleCompleteAb:{message}");
  213. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleCompleteAb(message);
  214. }
  215. //角色登录错误
  216. public override void OnLoginRoleErrorAb(string message)
  217. {
  218. Debug.Log($"OnLoginRoleErrorAb:{message}");
  219. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleErrorAb(message);
  220. }
  221. //角色升级回调实例化完成
  222. public override void OnUpgradeRoleStartAb(string message)
  223. {
  224. Debug.Log($"OnUpgradeRoleStartAb:{message}");
  225. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleStartAb(message);
  226. }
  227. public override void OnUpgradeRoleCompleteAb(string message)
  228. {
  229. Debug.Log($"OnUpgradeRoleCompleteAb:{message}");
  230. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleCompleteAb(message);
  231. }
  232. public override void OnUpgradeRoleErrorAb(string message)
  233. {
  234. Debug.Log($"OnUpgradeRoleErrorAb:{message}");
  235. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleErrorAb(message);
  236. }
  237. //顶号
  238. public override void OnRepeatLoginStartAb(string message)
  239. {
  240. Debug.Log($"OnRepeatLoginStartAb:{message}");
  241. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginStartAb(message);
  242. }
  243. public override void OnRepeatLoginCompleteAb(string message)
  244. {
  245. Debug.Log($"OnRepeatLoginCompleteAb:{message}");
  246. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginCompleteAb(message);
  247. }
  248. public override void OnRepeatLoginErrorAb(string message)
  249. {
  250. Debug.Log($"OnRepeatLoginErrorAb:{message}");
  251. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginErrorAb(message);
  252. }
  253. public override void OnCallIcpBeianStartAb(string message)
  254. {
  255. Debug.Log($"OnCallIcpBeianStartAb:{message}");
  256. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianStartAb(message);
  257. }
  258. public override void OnCallIcpBeianCompleteAb(string message)
  259. {
  260. Debug.Log($"OnCallIcpBeianCompleteAb:{message}");
  261. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianCompleteAb(message);
  262. }
  263. public override void OnCallIcpBeianErrorAb(string message)
  264. {
  265. Debug.Log($"OnCallIcpBeianErrorAb:{message}");
  266. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianErrorAb(message);
  267. }
  268. }
  269. }
  270. /// <summary>
  271. /// 场景(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)
  272. /// </summary>
  273. public enum DouYouRoleLogReportType
  274. {
  275. /// <summary>
  276. /// 进入游戏
  277. /// </summary>
  278. EnterGame = 1,
  279. /// <summary>
  280. /// 创建角色
  281. /// </summary>
  282. CreateRole = 2,
  283. /// <summary>
  284. /// 角色升级
  285. /// </summary>
  286. LevelUp = 3,
  287. /// <summary>
  288. /// 退出
  289. /// </summary>
  290. ExitGame = 4,
  291. /// <summary>
  292. /// 充值
  293. /// </summary>
  294. Pay = 5
  295. }
  296. }