Example #1
0
        /// <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));
        }
Example #2
0
        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); }
                );
        }