微信登录获取openid

This commit is contained in:
fatiao 2025-03-15 20:13:39 +08:00
parent c83dea2f63
commit 8218ed6599
6 changed files with 126 additions and 27 deletions

View File

@ -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

View File

@ -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

View File

@ -1238,6 +1238,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
Addressables.LoadAssetAsync<GameObject>(path).Completed += handle =>
{
assetDict[currAssetName] = handle.Result;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
loadCount++;
};
}
@ -1275,6 +1276,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
{
loadCount++;
assetDict[currAssetName] = handle.Result;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
};
}
}
@ -1312,6 +1314,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
{
assetDict[currAssetName] = handle.Result;
loadCount++;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
};
}
}
@ -1388,6 +1391,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
{
loadCount++;
assetDict[currAssetName] = handle.Result;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
}
else
{
@ -1417,6 +1421,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
{
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<AssetsMgr>
var handle = Addressables.LoadAssetAsync<PlayableAsset>(path);
yield return handle;
gos.Add(handle.Result);
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
}
}
}
@ -1433,6 +1439,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
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<AssetsMgr>
var handle = Addressables.LoadAssetAsync<PlayableAsset>(path);
yield return handle;
gos.Add(handle.Result);
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
}
}
}
@ -1480,6 +1488,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
{
assetDict[currAssetName] = handle.Result;
loadCount++;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
};
}
}
@ -1517,6 +1526,7 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
{
dict[currAssetName] = handle.Result;
loadCount++;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
};
}
}
@ -1539,10 +1549,11 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
else
path = string.Format("{0}", assetName[0]);
}
var currAssetName = assetName[0];
//ScriptableObject so = UnityEditor.AssetDatabase.LoadAssetAtPath<ScriptableObject>(path);
var handle = Addressables.LoadAssetAsync<ScriptableObject>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
if (Application.isPlaying)
yield return new WaitForEndOfFrame();
@ -1559,11 +1570,11 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
else
path = string.Format("{0}.prefab", assetName[0]);
}
var currAssetName = assetName[0];
//GameObject g = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
var handle = Addressables.LoadAssetAsync<GameObject>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(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<AssetsMgr>
else
path = string.Format("{0}.ogg", assetName[0]);
}
var currAssetName = assetName[0];
//AudioClip ac = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>(path);
var handle = Addressables.LoadAssetAsync<AudioClip>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(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<AssetsMgr>
path = string.Format("{0}.mp4", assetName[0]);
}
var currAssetName = assetName[0];
//VideoClip vc = UnityEditor.AssetDatabase.LoadAssetAtPath<VideoClip>(path);
var handle = Addressables.LoadAssetAsync<VideoClip>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(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<AssetsMgr>
else
path = string.Format("{0}.png", assetName[0]);
}
var currAssetName = assetName[0];
//Texture2D ac = UnityEditor.AssetDatabase.LoadAssetAtPath<Texture2D>(path);
var handle = Addressables.LoadAssetAsync<Texture2D>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
if (Application.isPlaying)
yield return new WaitForEndOfFrame();
@ -1639,11 +1651,11 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
else
path = string.Format("{0}.png", assetName[0]);
}
var currAssetName = assetName[0];
//Sprite sp = UnityEditor.AssetDatabase.LoadAssetAtPath<Sprite>(path);
var handle = Addressables.LoadAssetAsync<Sprite>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(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<AssetsMgr>
else
path = string.Format("{0}.mat", assetName[0]);
}
var currAssetName = assetName[0];
//Material mat = UnityEditor.AssetDatabase.LoadAssetAtPath<Material>(path);
var handle = Addressables.LoadAssetAsync<Material>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(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<AssetsMgr>
else
path = string.Format("{0}.controller", assetName[0]);
}
var currAssetName = assetName[0];
//RuntimeAnimatorController rac = UnityEditor.AssetDatabase.LoadAssetAtPath<RuntimeAnimatorController>(path);
var handle = Addressables.LoadAssetAsync<RuntimeAnimatorController>(path);
yield return handle;
EventMgr.DispatchEvent(new CoreEvent<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, currAssetName));
if (Application.isPlaying)
yield return new WaitForEndOfFrame();
callback.DynamicInvoke(handle.Result, seqId, pathName, assetName);

View File

@ -17,11 +17,12 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
List<string> mPrecachePetModels = new List<string>();
List<string> mPrecacheCtrls = new List<string>();
List<string> mPrecacheUIPrefabs = new List<string>();
List<string> mPrepareAssets = new List<string>();
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<BattlePrepareManager>
public void StartLoad()
{
DisablePreLoad();
mPrepareAssetCount = 0;
mPrepareAssets.Clear();
foreach (var p in mPrecacheAssets)
{
@ -94,6 +97,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
{
loadtaskCnt++;
Debug.Log("[StartLoad] " + p.Key + " : " + string.Join(",", p.Value.ToArray()));
mPrepareAssets.AddRange(p.Value);
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, p.Key, p.Value.ToArray());
}
}
@ -104,6 +108,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
loadtaskCnt++;
Debug.Log("[StartLoad] " + Constants.AnimatorPath + " : " + string.Join(",", mPrecacheCtrls.ToArray()));
ResourceMgr.Instance.LoadAsset<List<RuntimeAnimatorController>>(OnLoadAssetsCompleted, Constants.AnimatorPath, mPrecacheCtrls.ToArray());
mPrepareAssets.AddRange(mPrecacheCtrls);
mPrecacheCtrls.Clear();
}
@ -112,6 +117,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
loadtaskCnt++;
Debug.Log("[StartLoad] " + Constants.UIPath + " : " + string.Join(",", mPrecacheUIPrefabs.ToArray()));
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.UIPath, mPrecacheUIPrefabs.ToArray());
mPrepareAssets.AddRange(mPrecacheUIPrefabs);
mPrecacheUIPrefabs.Clear();
}
@ -120,6 +126,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
loadtaskCnt++;
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheHeroModels.ToArray()));
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheHeroModels.ToArray());
mPrepareAssets.AddRange(mPrecacheHeroModels);
mPrecacheHeroModels.Clear();
}
@ -128,6 +135,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
loadtaskCnt++;
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheMonsterModels.ToArray()));
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheMonsterModels.ToArray());
mPrepareAssets.AddRange(mPrecacheMonsterModels);
mPrecacheMonsterModels.Clear();
}
@ -136,6 +144,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
loadtaskCnt++;
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheParterModels.ToArray()));
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheParterModels.ToArray());
mPrepareAssets.AddRange(mPrecacheParterModels);
mPrecacheParterModels.Clear();
}
@ -144,19 +153,33 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
loadtaskCnt++;
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecachePetModels.ToArray()));
ResourceMgr.Instance.LoadAsset<List<GameObject>>(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<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, OnPrepareLoadReport);
if(!mIsLoading)
{
EventMgr.DispatchEvent<bool>(new CoreEvent<bool>(ECoreEventType.EID_PREPARE_LOAD_OK, true));
}
}
void OnPrepareLoadReport(CoreEvent<string> ce)
{
var assetName = ce.Data;
if (mPrepareAssets.Contains(assetName))
{
mPrepareAssetCount++;
}
var progress = mPrepareAssetCount / (float)mPrepareAssets.Count;
EventMgr.DispatchEvent<float>(new CoreEvent<float>(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<BattlePrepareManager>
mPrecacheMonsterModels.Clear();
mPrecacheParterModels.Clear();
mPrecachePetModels.Clear();
EventMgr.RemoveEventListener<string>(ECoreEventType.EID_PREPARE_LOAD_REPORT, OnPrepareLoadReport);
mIsLoading = false;
loadtaskCnt = 0;
}
@ -567,9 +591,9 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
{
loadtaskCnt--;
mIsLoading = loadtaskCnt > 0;
loadingProgress += loadingDelta;
EventMgr.DispatchEvent<float>(new CoreEvent<float>(ECoreEventType.EID_LOAD_PROGRESS, loadingProgress));
// loadingProgress += loadingDelta;
// Debug.Log($"loadingProgress: {loadingProgress}");
// EventMgr.DispatchEvent<float>(new CoreEvent<float>(ECoreEventType.EID_LOAD_PROGRESS, loadingProgress));
if (!mIsLoading)
EventMgr.DispatchEvent<bool>(new CoreEvent<bool>(ECoreEventType.EID_PREPARE_LOAD_OK, true));
}

View File

@ -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<GameMgr>
{
@ -208,9 +211,9 @@ public class GameMgr : SingletonMono<GameMgr>
//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);
@ -218,9 +221,69 @@ public class GameMgr : SingletonMono<GameMgr>
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<string> 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)
{
// 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<WXCode2SessionData>(json);
SDKEventUtil.SendMessage(SDKCBEnum.LOGIN_SUCCESS_CB, new UserInfo()
{
uid = data.openid,
token = data.session_key,
userName = "xxx"
});
EnterLuaLogin(false);
}));
}
private void OnAssetMapInitComplete()

View File

@ -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: