/// <summary> /// 必须确保dialog的assetbundle已经缓存在字典后调用 /// </summary> /// <param name="dialogName"></param> /// <returns></returns> private UIWindow CreateDialog(string dialogName) { if (string.IsNullOrEmpty(dialogName)) { return(null); } var assetBundleName = DialogAssetBundleMap.GetAssetBundleName(dialogName); var prefab = _resource.GetResource <GameObject>(assetBundleName, dialogName); if (!prefab) { return(null); } return(_dialogFactory.Create(prefab)); }
public void ShowDialog <T>(string dialogName, bool autoShow = true, bool cache = false, Action <T> success = null) where T : UIWindow { if (string.IsNullOrEmpty(dialogName)) { ShowToast("加载对话框失败", 2, true); return; } UIWindow dialog = null; if (cache && _dialogCache.ContainsKey(dialogName)) { dialog = _dialogCache[dialogName]; } if (dialog) { AsyncLoadDialog <T>( dialogName, autoShow, cache, null, () => { return(TaskResult.Success()); }, success, null ); return; } AsyncLoadDialog <T>( dialogName, autoShow, cache, () => { var assetBundleName = DialogAssetBundleMap.GetAssetBundleName(dialogName); _resource.StartLoadResource(assetBundleName, dialogName); }, () => { var assetBundleName = DialogAssetBundleMap.GetAssetBundleName(dialogName); if (string.IsNullOrEmpty(assetBundleName)) { return(TaskResult.Fail(ResultCode.FAILED, "加载对话框失败")); } _resource.HasCached(assetBundleName); if (!_resource.HasCached(assetBundleName)) { return(null); } return(TaskResult.Success()); }, success, (errCode, errMsg) => { // fail if (!string.IsNullOrEmpty(errMsg)) { ShowToast(errMsg, 2, true); } else { ShowToast("加载对话框失败", 2, true); } }, () => { ShowToast("加载对话框超时", 2, true); } ); }