From 8218ed6599b372f100a94029b6a59529bc79b82a Mon Sep 17 00:00:00 2001 From: fatiao <515948292@qq.com> Date: Sat, 15 Mar 2025 20:13:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=99=BB=E5=BD=95=E8=8E=B7?= =?UTF-8?q?=E5=8F=96openid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Lua/Managers/LuaGameMgr.lua | 3 +- Assets/Src/Core/Event/ECoreEventType.cs | 1 + Assets/Src/Core/Resource/AssetsMgr.cs | 40 +++++++---- .../FighterManager/BattlePrepareManager.cs | 40 ++++++++--- Assets/Src/GameLogic/GameMgr.cs | 67 ++++++++++++++++++- .../Editor/MiniGameConfig.asset | 2 +- 6 files changed, 126 insertions(+), 27 deletions(-) diff --git a/Assets/Lua/Managers/LuaGameMgr.lua b/Assets/Lua/Managers/LuaGameMgr.lua index 0c24ff677..1f09dd28b 100644 --- a/Assets/Lua/Managers/LuaGameMgr.lua +++ b/Assets/Lua/Managers/LuaGameMgr.lua @@ -111,8 +111,7 @@ function LuaGameMgr:ClearServerData() end function LuaGameMgr:ComposeCommonServerInfo(url) - local openId = "ro-100000" - --local openId = self.openId + local openId = self.openId if openId and openId ~= '' then url = url .. '&openid=' .. tostring(openId) end diff --git a/Assets/Src/Core/Event/ECoreEventType.cs b/Assets/Src/Core/Event/ECoreEventType.cs index dee46210a..e96d96075 100644 --- a/Assets/Src/Core/Event/ECoreEventType.cs +++ b/Assets/Src/Core/Event/ECoreEventType.cs @@ -105,6 +105,7 @@ public sealed class ECoreEventType public const int EID_FIGHTER_ADD_SHIELD = 333; public const int EID_FIGHTER_CLEAR_SHIELD = 334; + public const int EID_PREPARE_LOAD_REPORT = 335; //սUI diff --git a/Assets/Src/Core/Resource/AssetsMgr.cs b/Assets/Src/Core/Resource/AssetsMgr.cs index 3274b703a..694c393ce 100644 --- a/Assets/Src/Core/Resource/AssetsMgr.cs +++ b/Assets/Src/Core/Resource/AssetsMgr.cs @@ -1238,6 +1238,7 @@ public class AssetsMgr : SingletonMono Addressables.LoadAssetAsync(path).Completed += handle => { assetDict[currAssetName] = handle.Result; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); loadCount++; }; } @@ -1275,6 +1276,7 @@ public class AssetsMgr : SingletonMono { loadCount++; assetDict[currAssetName] = handle.Result; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); }; } } @@ -1312,6 +1314,7 @@ public class AssetsMgr : SingletonMono { assetDict[currAssetName] = handle.Result; loadCount++; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); }; } } @@ -1388,6 +1391,7 @@ public class AssetsMgr : SingletonMono { loadCount++; assetDict[currAssetName] = handle.Result; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); } else { @@ -1417,6 +1421,7 @@ public class AssetsMgr : SingletonMono { if (assetName[i] != "") { + var currAssetName = assetName[i]; if(!string.IsNullOrEmpty(pathName)) path = string.Format("{0}/{1}.playable", pathName, assetName[i]); else @@ -1425,6 +1430,7 @@ public class AssetsMgr : SingletonMono var handle = Addressables.LoadAssetAsync(path); yield return handle; gos.Add(handle.Result); + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); } } } @@ -1433,6 +1439,7 @@ public class AssetsMgr : SingletonMono string[] paths = Directory.GetFiles(pathName); foreach (string subPath in Directory.GetFiles(pathName)) { + var currAssetName = subPath; path = subPath.Replace('\\', '/'); string ext = Path.GetExtension(path); if ((ext != ".meta") && (ext != ".unity")) @@ -1441,6 +1448,7 @@ public class AssetsMgr : SingletonMono var handle = Addressables.LoadAssetAsync(path); yield return handle; gos.Add(handle.Result); + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); } } } @@ -1480,6 +1488,7 @@ public class AssetsMgr : SingletonMono { assetDict[currAssetName] = handle.Result; loadCount++; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); }; } } @@ -1517,6 +1526,7 @@ public class AssetsMgr : SingletonMono { dict[currAssetName] = handle.Result; loadCount++; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); }; } } @@ -1539,10 +1549,11 @@ public class AssetsMgr : SingletonMono else path = string.Format("{0}", assetName[0]); } - + var currAssetName = assetName[0]; //ScriptableObject so = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); @@ -1559,11 +1570,11 @@ public class AssetsMgr : SingletonMono else path = string.Format("{0}.prefab", assetName[0]); } - + var currAssetName = assetName[0]; //GameObject g = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; - + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); callback.DynamicInvoke(handle.Result, seqId, pathName, assetName); @@ -1580,11 +1591,11 @@ public class AssetsMgr : SingletonMono else path = string.Format("{0}.ogg", assetName[0]); } - + var currAssetName = assetName[0]; //AudioClip ac = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; - + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); callback.DynamicInvoke(handle.Result, seqId, pathName, assetName); @@ -1602,11 +1613,11 @@ public class AssetsMgr : SingletonMono path = string.Format("{0}.mp4", assetName[0]); } - + var currAssetName = assetName[0]; //VideoClip vc = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; - + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); callback.DynamicInvoke(handle.Result, seqId, pathName, assetName); @@ -1621,10 +1632,11 @@ public class AssetsMgr : SingletonMono else path = string.Format("{0}.png", assetName[0]); } - + var currAssetName = assetName[0]; //Texture2D ac = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); @@ -1639,11 +1651,11 @@ public class AssetsMgr : SingletonMono else path = string.Format("{0}.png", assetName[0]); } - + var currAssetName = assetName[0]; //Sprite sp = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; - + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); callback.DynamicInvoke(handle.Result, seqId, pathName, assetName); @@ -1657,11 +1669,11 @@ public class AssetsMgr : SingletonMono else path = string.Format("{0}.mat", assetName[0]); } - + var currAssetName = assetName[0]; //Material mat = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; - + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); callback.DynamicInvoke(handle.Result, seqId, pathName, assetName); @@ -1675,11 +1687,11 @@ public class AssetsMgr : SingletonMono else path = string.Format("{0}.controller", assetName[0]); } - + var currAssetName = assetName[0]; //RuntimeAnimatorController rac = UnityEditor.AssetDatabase.LoadAssetAtPath(path); var handle = Addressables.LoadAssetAsync(path); yield return handle; - + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName)); if (Application.isPlaying) yield return new WaitForEndOfFrame(); callback.DynamicInvoke(handle.Result, seqId, pathName, assetName); diff --git a/Assets/Src/GameLogic/Battle/FighterManager/BattlePrepareManager.cs b/Assets/Src/GameLogic/Battle/FighterManager/BattlePrepareManager.cs index 836c6b3d1..1170b8737 100644 --- a/Assets/Src/GameLogic/Battle/FighterManager/BattlePrepareManager.cs +++ b/Assets/Src/GameLogic/Battle/FighterManager/BattlePrepareManager.cs @@ -17,11 +17,12 @@ public class BattlePrepareManager : Singleton List mPrecachePetModels = new List(); List mPrecacheCtrls = new List(); List mPrecacheUIPrefabs = new List(); - + List mPrepareAssets = new List(); + private int mPrepareAssetCount = 0; private bool mIsLoading = false; public bool IsLoading { get { return mIsLoading; } } int loadtaskCnt = 0; - float loadingProgress = 0.4f; + float loadingProgress = 0.0f; float loadingDelta = 0; public int CacheEffectCnt @@ -87,6 +88,8 @@ public class BattlePrepareManager : Singleton public void StartLoad() { DisablePreLoad(); + mPrepareAssetCount = 0; + mPrepareAssets.Clear(); foreach (var p in mPrecacheAssets) { @@ -94,6 +97,7 @@ public class BattlePrepareManager : Singleton { loadtaskCnt++; Debug.Log("[StartLoad] " + p.Key + " : " + string.Join(",", p.Value.ToArray())); + mPrepareAssets.AddRange(p.Value); ResourceMgr.Instance.LoadAsset>(OnLoadAssetsCompleted, p.Key, p.Value.ToArray()); } } @@ -104,6 +108,7 @@ public class BattlePrepareManager : Singleton loadtaskCnt++; Debug.Log("[StartLoad] " + Constants.AnimatorPath + " : " + string.Join(",", mPrecacheCtrls.ToArray())); ResourceMgr.Instance.LoadAsset>(OnLoadAssetsCompleted, Constants.AnimatorPath, mPrecacheCtrls.ToArray()); + mPrepareAssets.AddRange(mPrecacheCtrls); mPrecacheCtrls.Clear(); } @@ -112,6 +117,7 @@ public class BattlePrepareManager : Singleton loadtaskCnt++; Debug.Log("[StartLoad] " + Constants.UIPath + " : " + string.Join(",", mPrecacheUIPrefabs.ToArray())); ResourceMgr.Instance.LoadAsset>(OnLoadAssetsCompleted, Constants.UIPath, mPrecacheUIPrefabs.ToArray()); + mPrepareAssets.AddRange(mPrecacheUIPrefabs); mPrecacheUIPrefabs.Clear(); } @@ -120,6 +126,7 @@ public class BattlePrepareManager : Singleton loadtaskCnt++; Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheHeroModels.ToArray())); ResourceMgr.Instance.LoadAsset>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheHeroModels.ToArray()); + mPrepareAssets.AddRange(mPrecacheHeroModels); mPrecacheHeroModels.Clear(); } @@ -128,6 +135,7 @@ public class BattlePrepareManager : Singleton loadtaskCnt++; Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheMonsterModels.ToArray())); ResourceMgr.Instance.LoadAsset>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheMonsterModels.ToArray()); + mPrepareAssets.AddRange(mPrecacheMonsterModels); mPrecacheMonsterModels.Clear(); } @@ -136,6 +144,7 @@ public class BattlePrepareManager : Singleton loadtaskCnt++; Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheParterModels.ToArray())); ResourceMgr.Instance.LoadAsset>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheParterModels.ToArray()); + mPrepareAssets.AddRange(mPrecacheParterModels); mPrecacheParterModels.Clear(); } @@ -144,19 +153,33 @@ public class BattlePrepareManager : Singleton loadtaskCnt++; Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecachePetModels.ToArray())); ResourceMgr.Instance.LoadAsset>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecachePetModels.ToArray()); + mPrepareAssets.AddRange(mPrecachePetModels); mPrecachePetModels.Clear(); } + // mIsLoading = loadtaskCnt > 0; + // loadingProgress = 0.4f; + // if (mIsLoading) + // loadingDelta = 0.5f / loadtaskCnt; mIsLoading = loadtaskCnt > 0; - loadingProgress = 0.4f; - if (mIsLoading) - loadingDelta = 0.5f / loadtaskCnt; + EventMgr.AddEventListener(ECoreEventType.EID_PREPARE_LOAD_REPORT, OnPrepareLoadReport); if(!mIsLoading) { EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_OK, true)); } } + void OnPrepareLoadReport(CoreEvent ce) + { + var assetName = ce.Data; + if (mPrepareAssets.Contains(assetName)) + { + mPrepareAssetCount++; + } + var progress = mPrepareAssetCount / (float)mPrepareAssets.Count; + EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_LOAD_PROGRESS, progress)); + } + public void PrecacheBuffs(int[] ids, int gender, ProfessionType jobType, int jobStage, int jobBranch) { if (ids == null) return; @@ -362,6 +385,7 @@ public class BattlePrepareManager : Singleton mPrecacheMonsterModels.Clear(); mPrecacheParterModels.Clear(); mPrecachePetModels.Clear(); + EventMgr.RemoveEventListener(ECoreEventType.EID_PREPARE_LOAD_REPORT, OnPrepareLoadReport); mIsLoading = false; loadtaskCnt = 0; } @@ -567,9 +591,9 @@ public class BattlePrepareManager : Singleton { loadtaskCnt--; mIsLoading = loadtaskCnt > 0; - loadingProgress += loadingDelta; - - EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_LOAD_PROGRESS, loadingProgress)); + // loadingProgress += loadingDelta; + // Debug.Log($"loadingProgress: {loadingProgress}"); + // EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_LOAD_PROGRESS, loadingProgress)); if (!mIsLoading) EventMgr.DispatchEvent(new CoreEvent(ECoreEventType.EID_PREPARE_LOAD_OK, true)); } diff --git a/Assets/Src/GameLogic/GameMgr.cs b/Assets/Src/GameLogic/GameMgr.cs index 45363669d..e27fa0456 100644 --- a/Assets/Src/GameLogic/GameMgr.cs +++ b/Assets/Src/GameLogic/GameMgr.cs @@ -1,9 +1,12 @@ #define USE_LUA +using System; using UnityEngine; using System.Collections; using LuaInterface; using System.Collections.Generic; +using System.Threading.Tasks; +using UnityEngine.Networking; public class GameMgr : SingletonMono { @@ -208,19 +211,79 @@ public class GameMgr : SingletonMono //InitBuildConfig(); //InitData(); + LaunchLoadMgr lanuchLoadMgr = new LaunchLoadMgr(); lanuchLoadMgr.StartLaunch(OnLanuchLoadCompleted, OnAssetMapInitComplete); - //检测非法修改 AntiCheatMgr.Instance.GetOrCreateAnti(EnAntiCheatType.enSystemTime).Init(AntiCheatCfg.c_fTimeSysteCheckTime); AntiCheatMgr.Instance.GetOrCreateAnti(EnAntiCheatType.enScaleTime).Init(AntiCheatCfg.c_fTimeScaleCheckTime); bInited = true; } + + [System.Serializable] + public class WXCode2SessionData + { + public string openid; + public string session_key; + public string unionid; + public string errcode; + public string errmsg; + } + IEnumerator GetSdkUUID(string v1, string v2, Action onComplete) + { +#if UNITY_EDITOR + onComplete.Invoke("{\n\"openid\":\"pc-100001\",\n\"session_key\":\"xxxxx\",\n\"unionid\":\"xxxxx\",\n\"errcode\":0,\n\"errmsg\":\"xxxxx\"\n}"); + yield break; +#else + string wxLoginCode = string.Empty; + WeChatWASM.WX.Login(new WeChatWASM.LoginOption() + { + success = (res) => + { + Debug.Log("微信获取 code 成功"); + Debug.Log(res.code); + wxLoginCode = res.code; + }, + fail = (err) => + { + Debug.Log("微信获取 code 失败"); + Debug.Log(err.errMsg); + } + }); + while (true) + { + yield return null; + if (wxLoginCode != string.Empty) break; + } + + var uri = $"https://api.weixin.qq.com/sns/jscode2session?appid={v1}&secret={v2}&js_code={wxLoginCode}&grant_type=authorization_code"; + Debug.Log("微信:" + uri); + UnityWebRequest webRequest = UnityWebRequest.Get(uri); + yield return webRequest.SendWebRequest(); + onComplete(webRequest.downloadHandler.text); +#endif + } private void OnLanuchLoadCompleted(bool success) { - EnterLuaLogin(false); + // wx94eecfb4cfafcde5 + var v1 = Convert.FromBase64String("d3g5NGVlY2ZiNGNmYWZjZGU1"); + // f00967e57166397a9ec8908b3626fdca + var v2 = Convert.FromBase64String("ZjAwOTY3ZTU3MTY2Mzk3YTll" + "Yzg5MDhiMzYyNmZkY2E" + "="); + StartCoroutine(GetSdkUUID(System.Text.Encoding.UTF8.GetString(v1), System.Text.Encoding.UTF8.GetString(v2), json => + { + Debug.Log("GetSdkUUID: " + json); + WXCode2SessionData data = JsonUtility.FromJson(json); + SDKEventUtil.SendMessage(SDKCBEnum.LOGIN_SUCCESS_CB, new UserInfo() + { + uid = data.openid, + token = data.session_key, + userName = "xxx" + }); + EnterLuaLogin(false); + })); + } private void OnAssetMapInitComplete() diff --git a/Assets/WX-WASM-SDK-V2/Editor/MiniGameConfig.asset b/Assets/WX-WASM-SDK-V2/Editor/MiniGameConfig.asset index a1b2ba137..bb69dd9f7 100644 --- a/Assets/WX-WASM-SDK-V2/Editor/MiniGameConfig.asset +++ b/Assets/WX-WASM-SDK-V2/Editor/MiniGameConfig.asset @@ -15,7 +15,7 @@ MonoBehaviour: ProjectConf: projectName: minigame Appid: wx94eecfb4cfafcde5 - CDN: https://rowebgl.oss-cn-hangzhou.aliyuncs.com/27 + CDN: https://rowebgl.oss-cn-hangzhou.aliyuncs.com/30 assetLoadType: 0 compressDataPackage: 1 VideoUrl: