private void InitRemoteConfig() { SetJindu("正在检查本地资源版本,请稍候"); AOutput.Log("InitRemoteConfig"); ConfigDownloader.Instance.StartToDownload(ConfigURL, () => { ParseConfigs(); if (UConfigManager.bUsingAb) { SetJindu("正在加载脚本资源......"); StartCoroutine(OnDownloadDll(ConfigDownloader.Instance.OnGetValue("dll"))); } else { SetJindu("正在加载脚本资源..."); LoadDll(File.ReadAllBytes("Assets/RemoteResources/Dll/ahotgames.bytes") , File.ReadAllBytes("Assets/RemoteResources/Dll/ahotgames.pdb")); } }, () => { SetJindu("正在加载本地资源,请稍候"); Debug.Log("下载远端配置文件失败,加载本地文件"); UConfigManager.bUsingAb = false; StartCoroutine(OnDownloadDll(UStaticFuncs.GetStreamAssetPath() + UStaticFuncs.GetPlatformFolder(Application.platform) + "/dll/ahotgames.ab")); }); }
private AssetBundle DoGetAssetBundle(string assetBundlePath) { if (dAssetBundles.ContainsKey(assetBundlePath)) { return(dAssetBundles[assetBundlePath]); } var path = UStaticFuncs.ConfigSaveDir + "/" + assetBundlePath; if (!File.Exists(path)) { return(null); } var ab = AssetBundle.LoadFromFile(path); if (ab == null) { return(null); } dAssetBundles.Add(assetBundlePath, ab); var depends = OnGetAssetBundleDependeces(UStaticFuncs.GetAssetBundleName(assetBundlePath)); foreach (var d in depends) { OnGetAssetBundle(assetBundlePath); } return(ab); }
internal void OnUnloadAssetBundles() { if (!Enter.bUsingAb) { return; } var dep = OnGetAssetBundleDependeces("ui/uiloading.ab").ToList(); dep.Add(UStaticFuncs.GetPlatformFolder(Application.platform)); var remove = new List <string>(); foreach (var d in dAssetBundles) { if (dep.Contains(d.Key)) { continue; } d.Value.Unload(true); remove.Add(d.Key); } foreach (var r in remove) { dAssetBundles.Remove(r); } }
private void InitObjs() { var Objs = UStaticFuncs.FindChild(gameObj.transform, "Objs"); var aobjs = new List <Transform>(); for (var i = 0; i < Objs.childCount; i++) { aobjs.Add(Objs.GetChild(i)); } var ixcount = UnityEngine.Random.Range(20, 30); var iycount = UnityEngine.Random.Range(20, 30); for (var i = 1; i <= ixcount; i++) { for (var j = 1; j <= iycount; j++) { var obj = aobjs[UnityEngine.Random.Range(0, aobjs.Count)]; var x = (i - 10) * 10 + UnityEngine.Random.Range(0, 10); var z = (j - 10) * 10 + UnityEngine.Random.Range(0, 10); obj = GameObject.Instantiate(obj, Role.parent); obj.localPosition = new Vector3(x, obj.localPosition.y, z); } } }
private void Start() { #if UNITY_ANDROID MonoInstancePool.getInstance <SDK_Orientation>(true).ShowBar(); #endif Screen.fullScreen = true; MonoInstancePool.getInstance <AntiScriptSplit>(true); MonoInstancePool.getInstance <SDK_WeChat>(true); trUIAlert = UStaticFuncs.FindChildComponent <Transform>(transform, "UIAlert"); fprocessing = 0.1f; #if UNITY_IOS MonoInstancePool.getInstance <SDK_AppleInApp>(true); #endif gameObject.AddComponent <UConsoleDebug>(); #if !UNITY_WEBGL var fa = "fa" + Utils_Plugins.Util_GetBundleVersion(); if (!PlayerPrefs.HasKey(fa)) { AOutput.Log($"start copy files {fa}"); MonoInstancePool.getInstance <UCopyFilesFromStreamingAssets>().OnCopy("versions.txt", UStaticFuncs.ConfigSaveDir, () => { InitRemoteConfig(); PlayerPrefs.SetInt("fa" + Utils_Plugins.Util_GetBundleVersion(), 1); }); } else { #endif InitRemoteConfig(); #if !UNITY_WEBGL } #endif }
protected void RegistButtonAction(string buttonName, Action clickAction) { var btn = UStaticFuncs.FindChildComponent <Button>(transform, buttonName); if (btn != null) { btn.onClick.AddListener(() => { clickAction(); }); } }
protected void ShowWidget(string widgetName, bool bShow) { var w = UStaticFuncs.FindChildComponent <Component>(gameObj.transform, widgetName); if (w != null) { w.gameObject.SetActive(bShow); } }
public string[] OnGetAssetBundleDependeces(string name, List <string> dependens = null) { if (!dAssetBundles.ContainsKey(UStaticFuncs.GetPlatformFolder(Application.platform))) { return(new string[] { }); } if (manifestBundle == null) { manifestBundle = dAssetBundles[UStaticFuncs.GetPlatformFolder(Application.platform)]; } if (manifest == null) { manifest = (AssetBundleManifest)manifestBundle.LoadAsset("AssetBundleManifest"); } var total = dependens; if (dependens != null) { foreach (var d in dependens) { if (!total.Contains(d)) { total.Add(d); } } } else { total = new List <string>(); } var result = manifest.GetAllDependencies(name); foreach (var d in result) { if (!total.Contains(d)) { total.Add(d); } } foreach (var r in result) { if (dependens != null && dependens.Contains(r)) { continue; } var deps = OnGetAssetBundleDependeces(r, total); foreach (var d in deps) { if (!total.Contains(d)) { total.Add(d); } } } return(total.ToArray()); }
protected override void InitComponents() { Content = UStaticFuncs.FindChildComponent <Text>(transform, "Content"); btnConfirm = UStaticFuncs.FindChildComponent <Button>(transform, "btnConfirm"); btnCancel = UStaticFuncs.FindChildComponent <Button>(transform, "btnCancel"); btnConfirm.onClick.AddListener(OnConfirm); btnCancel.onClick.AddListener(OnCancel); DontDestroyOnLoad(gameObject); }
public T FindWidgetWithPath <T>(Transform trans, string widgetName) where T : Component { var t = UStaticFuncs.FindChildComponent <T>(trans, widgetName); if (t == null) { AOutput.Log("FindWidget failed " + widgetName); } return(t); }
protected void OnRegistButtonActions() { OnRegistAction((msg) => { if (!dButtons.ContainsKey(msg)) { return; } UStaticFuncs.EmitButtonClick(dButtons[msg]); }); }
protected void ChangeButtonText(string buttonName, string buttonText) { var btn = UStaticFuncs.FindChildComponent <Button>(transform, buttonName); if (btn == null) { return; } var t = btn.GetComponentInChildren <Text>(); t.text = buttonText; }
protected void ShowWidget(Transform tr, string widgetName, bool bShow) { if (tr == null) { return; } var w = UStaticFuncs.FindChildComponent <Component>(tr, widgetName); if (w != null) { w.gameObject.SetActive(bShow); } }
protected override void InitComponents() { usernameInput = UStaticFuncs.FindChildComponent <InputField>(transform, "username"); passwordInput = UStaticFuncs.FindChildComponent <InputField>(transform, "username"); btnLogin = UStaticFuncs.FindChildComponent <Button>(transform, "Login"); btnLogin.onClick.AddListener( delegate() { string username = usernameInput.text; string password = passwordInput.text; //do login }); }
public T OnLoadAsset <T>(string assetBundlePath) where T : UnityEngine.Object { T prefab = null; #if UNITY_EDITOR if (!UConfigManager.bUsingAb) { prefab = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/RemoteResources/" + assetBundlePath, typeof(T)) as T; if (prefab != null) { return(prefab); } if (assetBundlePath.Contains(".")) { assetBundlePath = assetBundlePath.Substring(0, assetBundlePath.LastIndexOf(".")); } } #endif if (!UConfigManager.bUsingAb) { prefab = Resources.Load <T>(assetBundlePath); } if (prefab) { return(prefab); } assetBundlePath = assetBundlePath.ToLower(); var assetName = UStaticFuncs.GetAssetBundleName(assetBundlePath); if (dAssets.ContainsKey(assetName) && dAssets[assetName] != null && dAssets[assetName] is T) { return(dAssets[assetName] as T); } var deps = OnGetAssetBundleDependeces(assetBundlePath + AssetBundleSuffix); foreach (var dep in deps) { OnGetAssetBundle(UStaticFuncs.GetAssetBundleName(dep)); } var ab = OnGetAssetBundle(assetBundlePath); if (ab == null) { return(Resources.Load <T>(assetBundlePath)); } var t = ab.LoadAsset <T>(assetName); dAssets.Add(assetName, t); return(t); }
private void Start() { ConfigDownloader.Instance.StartToDownload(ConfigURL, () => { ParseConfigs(); Debug.Log("UConfigManager.bUsingAb " + UConfigManager.bUsingAb); UAssetBundleDownloader.Instance.DownloadResources((l1) => { UAssetBundleDownloader.Instance.DownloadResources((l2) => { var dll = "Dll/AHotGames"; byte[] pdbBytes = null; #if UNITY_EDITOR if (!UConfigManager.bUsingAb) { dll += ".bytes"; } pdbBytes = System.IO.File.ReadAllBytes("Assets/RemoteResources/Dll/AHotGames.pdb"); #endif ILRuntimeHandler.Instance.DoLoadDll("ahotmages" , UAssetBundleDownloader.Instance.OnLoadAsset <TextAsset>(dll).bytes, pdbBytes); ILRuntimeHandler.Instance.SetUnityMessageReceiver(MonoInstancePool.getInstance <UEmitMessage>(true).gameObject); ILRuntimeHandler.Instance.OnLoadClass("AEntrance", new GameObject("AEntrance")); } , null, (arg) => { var preloads = ConfigDownloader.Instance.OnGetValue("preloads"); var lPreloads = preloads.Split(',').ToList(); foreach (var p in lPreloads) { if (arg.ToLower().StartsWith(p.ToLower())) { return(true); } } return(false); }); } , null, null, true, UStaticFuncs.GetPlatformFolder(Application.platform) , UStaticFuncs.GetPlatformFolder(Application.platform) + ".manifest"); }, () => { Debug.LogError("下载配置文件失败。"); }); }
public void DownloadConfig(Action downloadConfigComplete) { //UILoading.SetLoadingContent("正在加载远端配置表。"); UAssetBundleDownloader.Instance.DownloadResources((list) => { foreach (var str in list) { var assetName = UStaticFuncs.GetAssetBundleName(str); if (!dExcelLoaders.ContainsKey(assetName)) { continue; } dExcelLoaders[assetName](UAssetBundleDownloader.Instance.OnLoadAsset <TextAsset>(str).text); } downloadConfigComplete?.Invoke(); } , null, filter, dExcelLoaders.Keys.ToArray()); }
private void InitProgressSlider() { UILoading = UAssetBundleDownloader.Instance.OnLoadAsset <Transform>("ui/uiloading"); Debug.Log($"UILoading {UILoading}"); if (UILoading == null) { UILoading = UStaticFuncs.FindChildComponent <Transform>(transform, "UILoading"); } if (UILoading != null) { UILoading.gameObject.SetActive(true); UILoading.GetComponent <Canvas>().sortingOrder = -1; SliderProgress = UStaticFuncs.FindChildComponent <Image>(UILoading, "SliderProgress"); textProgress = UStaticFuncs.FindChildComponent <Text>(UILoading, "textProgress"); jindu = UStaticFuncs.FindChildComponent <Text>(UILoading, "jindu"); SetJindu("正在初始化,请稍候"); } }
protected override void InitComponents() { var btnQuit = FindWidget <Button>("btnQuit"); btnQuit.onClick.AddListener(() => { UnloadThis(); LoadAnotherUI <UIMain>(); }); Role = UStaticFuncs.FindChild(gameObj.transform, "Role"); var LegL = UStaticFuncs.FindChild(gameObj.transform, "LegL"); var LegR = UStaticFuncs.FindChild(gameObj.transform, "LegR"); InitObjs(); const float rotateSpeed = 20; const float moveSpeed = 2; var updater = gameObj.AddComponent <UUpdater>(); updater.onUpdate += () => { if (Input.GetKey(KeyCode.A)) { Role.transform.Rotate(Vector3.down * Time.deltaTime * rotateSpeed); } if (Input.GetKey(KeyCode.D)) { Role.transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed); } if (Input.GetKey(KeyCode.W)) { Role.transform.Translate(Vector3.forward * Time.deltaTime * moveSpeed); } if (Input.GetKey(KeyCode.S)) { Role.transform.Translate(Vector3.back * Time.deltaTime * moveSpeed); } }; }
public string OnGetValue(string skey) { if (dKeyValue.ContainsKey($"{skey}{UStaticFuncs.GetPlatformFolder(Application.platform)}{Utils_Plugins.Util_GetBundleVersion()}")) { return(dKeyValue[$"{skey}{UStaticFuncs.GetPlatformFolder(Application.platform)}{Utils_Plugins.Util_GetBundleVersion()}"]); } if (dKeyValue.ContainsKey($"{skey}{UStaticFuncs.GetPlatformFolder(Application.platform)}")) { return(dKeyValue[$"{skey}{UStaticFuncs.GetPlatformFolder(Application.platform)}"]); } if (dKeyValue.ContainsKey($"{skey}{Utils_Plugins.Util_GetBundleVersion()}")) { return(dKeyValue[$"{skey}{Utils_Plugins.Util_GetBundleVersion()}"]); } if (dKeyValue.ContainsKey(skey)) { return(dKeyValue[skey]); } return(""); }
private IEnumerator DoLoadFileList(string fileListName) { lfiles.Clear(); var www = new WWW(UStaticFuncs.GetStreamAssetPath() + UStaticFuncs.GetPlatformFolder(Application.platform) + "/" + fileListName); yield return(www); if (string.IsNullOrEmpty(www.error)) { var atext = www.text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (var t in atext) { var fname = ""; var av = t.Split('|'); if (av.Length <= 2) { continue; } fname = av[0]; if (fname.StartsWith("/") || fname.StartsWith("\\")) { fname = fname.Substring(1); } fname = fname.Replace("\\", "/"); if (fname.EndsWith(".meta")) { continue; } lfiles.Add(fname); } totalCount = lfiles.Count; OnCopyFile(); } else { AOutput.Log("DoCopyFile failed:" + www.error + " for file " + www.url); actionOnComp?.Invoke(); } }
public T FindWidgetWithPath <T>(string widgetNameWithPath) where T : Component { var parent = transform; var widgetName = widgetNameWithPath; widgetNameWithPath = widgetNameWithPath.Replace("\\", "/"); if (widgetNameWithPath.Contains("/")) { var alayers = widgetNameWithPath.Split('/'); widgetName = alayers[alayers.Length - 1]; for (var i = 0; i < alayers.Length - 1; i++) { var tr = FindWidgetWithPath <Transform>(parent, alayers[i]); if (tr == null) { break; } parent = tr; } } return(UStaticFuncs.FindChildComponent <T>(parent, widgetName)); }
private IEnumerator DoCopyFile(string fname) { var www = new WWW(UStaticFuncs.GetStreamAssetPath() + UStaticFuncs.GetPlatformFolder(Application.platform) + "/" + fname); yield return(www); if (string.IsNullOrEmpty(www.error)) { var finfo = new FileInfo(UStaticFuncs.ConfigSaveDir + fname); if (!finfo.Directory.Exists) { finfo.Directory.Create(); } System.IO.File.WriteAllBytes(finfo.FullName, www.bytes); } else { AOutput.Log("DoCopyFile failed:" + www.error + " for file " + www.url); } AOutput.Log("正在释放资源,不消耗流量。"); OnCopyFile(); }
private void Start() { ConfigDownloader.Instance.StartToDownload(ConfigURL, () => { UAssetBundleDownloader.Instance.DownloadResources((l1) => { UAssetBundleDownloader.Instance.DownloadResources((l2) => { var dll = "Dll/AHotGames"; #if UNITY_EDITOR dll += ".bytes"; #endif ILRuntimeHandler.Instance.DoLoadDll("ahotmages", UAssetBundleDownloader.Instance.OnLoadAsset <TextAsset>(dll).bytes); ILRuntimeHandler.Instance.SetUnityMessageReceiver(MonoInstancePool.getInstance <UEmitMessage>(true).gameObject); ILRuntimeHandler.Instance.OnLoadClass("AEntrance", new GameObject("AEntrance")); } , null, (arg) => { return(arg.Contains("dll/")); }, true); } , null, null, true, UStaticFuncs.GetPlatformFolder(Application.platform) , UStaticFuncs.GetPlatformFolder(Application.platform) + ".manifest"); }, () => { Debug.LogError("下载配置文件失败。"); }); }
public AssetBundle OnGetAssetBundle(string assetBundlePath, bool NoDependences = false) { if (!assetBundlePath.EndsWith(AssetBundleSuffix)) { assetBundlePath += AssetBundleSuffix; } assetBundlePath = assetBundlePath.ToLower(); if (!NoDependences && dAssetBundles.ContainsKey(UStaticFuncs.GetPlatformFolder(Application.platform))) { if (manifestBundle == null) { manifestBundle = dAssetBundles[UStaticFuncs.GetPlatformFolder(Application.platform)]; } if (manifest == null) { manifest = (AssetBundleManifest)manifestBundle.LoadAsset("AssetBundleManifest"); } } if (dAssetBundles.ContainsKey(assetBundlePath)) { return(dAssetBundles[assetBundlePath]); } return(DoGetAssetBundle(assetBundlePath)); }
public AssetBundle OnGetAssetBundle(string name, bool NoDependences = false) { name = name.ToLower(); if (!name.EndsWith(AssetBundleSuffix)) { name += AssetBundleSuffix; } if (!NoDependences && dAssetBundles.ContainsKey(UStaticFuncs.GetPlatformFolder(Application.platform))) { if (manifestBundle == null) { manifestBundle = dAssetBundles[UStaticFuncs.GetPlatformFolder(Application.platform)]; } if (manifest == null) { manifest = (AssetBundleManifest)manifestBundle.LoadAsset("AssetBundleManifest"); } } if (dAssetBundles.ContainsKey(name)) { return(dAssetBundles[name]); } return(null); }
private IEnumerator DoCheckRemoteVersion(Action <List <string> > downloadComplete, Action <int, int, float> downloadProgress, Func <string, bool> filter, bool NoDependeces, params string[] resources) { yield return(new WaitForEndOfFrame()); this.downloadComplete = downloadComplete; downloading = true; ResetDownloadStatus(); if (string.IsNullOrEmpty(UStaticFuncs.DownLoadConfigURL)) { Debug.Log("资源下载地址为空"); } else { Debug.Log("正在检查资源版本"); downloadingResources = resources.ToList(); if (!NoDependeces) { foreach (var r in resources) { var files = UAssetBundleDownloader.Instance.OnGetAssetBundleDependeces(r); foreach (var f in files) { if (downloadingResources.Contains(f)) { continue; } downloadingResources.Add(f); } } } var downloadedResources = new List <string>(); if (dFileRemoteVersions.Count == 0) { var url = UStaticFuncs.DownLoadConfigURL + "versions.txt?-" + ApiDateTime.Now.Ticks; if (UStaticFuncs.GetPlatformFolder(Application.platform) == UStaticFuncs.GetPlatformFolder(RuntimePlatform.WindowsPlayer)) { if (!url.Contains("://")) { url = "file://" + url; } } WWW www = new WWW(url); yield return(www); if (string.IsNullOrEmpty(www.error)) { var text = www.text; var atext = text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (var t in atext) { var name = ""; var av = t.Split('|'); if (av.Length < 3) { continue; } name = av[0]; if (name.StartsWith("/") || name.StartsWith("\\")) { name = name.Substring(1); } name = name.Replace("\\", "/"); var filecell = new RemoteFileCell(); filecell.version = av[1]; filecell.bytes = typeParser.Int64Parse(av[2]); if (dFileRemoteVersions.ContainsKey(name)) { dFileRemoteVersions[name] = filecell; } else { dFileRemoteVersions.Add(name, filecell); } } } else { Debug.Log("检查资源版本失败," + www.error); } } foreach (var rver in dFileRemoteVersions) { if (filter != null && filter(rver.Key)) { if (!downloadingResources.Contains(rver.Key)) { downloadingResources.Add(rver.Key); } if (!NoDependeces) { var files = OnGetAssetBundleDependeces(rver.Key); foreach (var f in files) { if (downloadingResources.Contains(f)) { continue; } downloadingResources.Add(f); } } } var remove = new List <string>(); foreach (var n in downloadingResources) { if (!dFileRemoteVersions.ContainsKey(n)) { remove.Add(n); } } foreach (var r in remove) { downloadingResources.Remove(r); } } foreach (var r in downloadingResources) { totalBytes += dFileRemoteVersions[r].bytes; } if (dFileRemoteVersions.Count != 0) { waitingForDownload = new List <string>(); waitingForDownload.AddRange(downloadingResources); if (downloadingResources.Count == 0) { OnDownloadComplete(waitingForDownload); } else { for (var i = 0; i < DownloadHandlerCount && i < downloadingResources.Count; i++) { StartToDownloadResources(downloadComplete, downloadProgress); } } } } }
public T OnLoadAsset <T>(string assetBundlePath) where T : UnityEngine.Object { Debug.Log($"OnLoadAsset Enter.bUsingAb:{Enter.bUsingAb}"); #if UNITY_EDITOR if (!Enter.bUsingAb) { var prefab = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/RemoteResources/" + assetBundlePath, typeof(T)) as T; if (prefab != null) { return(prefab); } else { prefab = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/RemoteResources/" + assetBundlePath + ".prefab", typeof(T)) as T; if (prefab != null) { return(prefab); } } } #endif if (!Enter.bUsingAb) { var path = assetBundlePath; if (path.Contains(".")) { path = path.Split('.')[0]; } return(Resources.Load <T>(path)); } var assetName = UStaticFuncs.GetAssetBundleName(assetBundlePath); if (dAssets.ContainsKey(assetName) && dAssets[assetName] != null && dAssets[assetName] is T) { return(dAssets[assetName] as T); } var ab = OnGetAssetBundle(assetBundlePath); if (ab == null) { return(Resources.Load <T>(assetBundlePath)); } var deps = OnGetAssetBundleDependeces(assetBundlePath + AssetBundleSuffix); foreach (var dep in deps) { OnGetAssetBundle(dep); } if (dAssets.ContainsKey(assetName) && dAssets[assetName] != null) { return(dAssets[assetName] as T); } var t = ab.LoadAsset <T>(assetName); if (t == null) { return(t); } if (dAssets.ContainsKey(assetName)) { dAssets[assetName] = t; } else { dAssets.Add(assetName, t); } return(t); }
private IEnumerator DoCheckRemoteVersion(Action <List <string> > downloadComplete, Action <int, int, float> downloadProgress, Func <string, bool> filter, bool NoDependeces, params string[] resources) { if (string.IsNullOrEmpty(UStaticFuncs.DownLoadConfigURL)) { Debug.Log("资源下载地址为空。"); } else { Debug.Log("正在检查资源版本"); var resourcesList = resources.ToList(); if (!NoDependeces) { foreach (var r in resources) { var files = UAssetBundleDownloader.Instance.OnGetAssetBundleDependeces(r); foreach (var f in files) { if (resourcesList.Contains(f)) { continue; } resourcesList.Add(f); } } } var downloadedResources = new List <string>(); if (dFileRemoteVersions.Count == 0) { var url = UStaticFuncs.DownLoadConfigURL + "versions.txt?" + ApiDateTime.Now.Ticks; if (UStaticFuncs.GetPlatformFolder(Application.platform) == UStaticFuncs.GetPlatformFolder(RuntimePlatform.WindowsPlayer)) { if (!url.Contains("://")) { url = "file://" + url; } } www = new WWW(url); yield return(www); if (string.IsNullOrEmpty(www.error)) { var text = www.text; var atext = text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (var t in atext) { var name = ""; var av = t.Split('|'); if (av.Length < 3) { Debug.LogError("remote version file check failed"); } name = av[0]; if (name.StartsWith("/") || name.StartsWith("\\")) { name = name.Substring(1); } name = name.Replace("\\", "/"); var filecell = new RemoteFileCell(); filecell.version = av[1]; filecell.bytes = typeParser.Int64Parse(av[2]); if (dFileRemoteVersions.ContainsKey(name)) { dFileRemoteVersions[name] = filecell; } else { dFileRemoteVersions.Add(name, filecell); } } } else { Debug.Log("检查资源版本失败," + www.error); } } foreach (var rver in dFileRemoteVersions) { if (filter != null && filter(rver.Key)) { if (!resourcesList.Contains(rver.Key)) { resourcesList.Add(rver.Key); } if (!NoDependeces) { var files = OnGetAssetBundleDependeces(rver.Key); foreach (var f in files) { if (resourcesList.Contains(f)) { continue; } resourcesList.Add(f); } } } var remove = new List <string>(); foreach (var n in resourcesList) { if (dAssetBundles.ContainsKey(n) || !dFileRemoteVersions.ContainsKey(n)) { remove.Add(n); } } foreach (var r in remove) { resourcesList.Remove(r); } } totalBytes = 0; foreach (var r in resourcesList) { totalBytes += dFileRemoteVersions[r].bytes; } if (dFileRemoteVersions.Count != 0) { if (resourcesList.Count == 0) { downloadComplete?.Invoke(resourcesList); } else { StartToDownloadResources(downloadComplete, downloadProgress, downloadedResources, resourcesList); #if UNITY_IOS || UNITY_EDITOR StartCoroutine(DelayUpdateProgress(downloadProgress, downloadedResources, resourcesList)); #endif } } } }
public T FindWidget <T>(Transform trans, string widgetName) where T : Component { return(UStaticFuncs.FindChildComponent <T>(trans, widgetName)); }