/// <summary> /// 调用AB 包资源(通过ABLoadAssetHelper.cs 进行再次封装) /// </summary> /// <param name="abPara">AB包函数</param> /// <param name="taskComplete">回调委托,传出数据</param> /// <returns></returns> private IEnumerator LoadABAsset(ABPara abPara, DelTaskComplete taskComplete) { //调用AB框架ab包 ABLoadAssetHelper.GetInstance().LoadAssetBundlePack(abPara); //AB包是否调用完成 while (!ABLoadAssetHelper.GetInstance().IsLoadFinish) { yield return(null); } //得到(克隆)的UI预设 UnityEngine.GameObject goCloneUIPrefab = (UnityEngine.GameObject)ABLoadAssetHelper.GetInstance().GetCloneUIPrefab(); //委托调用 taskComplete.Invoke(goCloneUIPrefab); }
/// <summary> /// 调用AB框架ab包 /// </summary> /// <param name="abPara"></param> public void LoadAssetBundlePack(ABPara abPara) { //仅仅是加载相同AB包中的不同资源 if ((abPara.ScenesName==_ScenesName) && (abPara.AssetBundleName==_AssetBundleName)) { _AssetName = abPara.AssetName; LoadABAssetComplete(""); //这里的参数没有实际作用。 } else { //参数赋值 _ScenesName = abPara.ScenesName; _AssetBundleName = abPara.AssetBundleName; _AssetName = abPara.AssetName; //调用ABFW 主API StartCoroutine(AssetBundleMgr.GetInstance().LoadAssetBundlePack(_ScenesName, _AssetBundleName, LoadABAssetComplete)); } }
/// <summary> /// 初始化加载(根UI窗体)Canvas预设 /// </summary> private IEnumerator InitRootCanvasLoading(DelTaskComplete taskComplete) { //UI 根窗体路径(参数) string uiRootFormPaths = string.Empty; //从UI预设路径集合中,查询UI根窗体的路径 _DicFormsPaths.TryGetValue(SysDefine.ROOT_UIFORM, out uiRootFormPaths); //从路径(ab包参数)配置文件中,来合成需要的ab包参数 string[] strTempArray = uiRootFormPaths.Split('|'); ABPara abPara = new ABPara(); abPara.ScenesName = strTempArray[0]; abPara.AssetBundleName = strTempArray[1]; abPara.AssetName = strTempArray[2]; return(LoadABAsset(abPara, taskComplete)); }
// /// <summary> UI框架中传统的基于Resources 的本机资源加载方式。 // /// 加载指定名称的“UI窗体” // /// 功能: // /// 1:根据“UI窗体名称”,加载预设克隆体。 // /// 2:根据不同预设克隆体中带的脚本中不同的“位置信息”,加载到“根窗体”下不同的节点。 // /// 3:隐藏刚创建的UI克隆体。 // /// 4:把克隆体,加入到“所有UI窗体”(缓存)集合中。 // /// // /// </summary> // /// <param name="uiFormName">UI窗体名称</param> //private BaseUIForm LoadUIForm(string uiFormName) // { // string strUIFormPaths = null; //UI窗体路径 // GameObject goCloneUIPrefabs = null; //创建的UI克隆体预设 // BaseUIForm baseUiForm=null; //窗体基类 // //根据UI窗体名称,得到对应的加载路径 // _DicFormsPaths.TryGetValue(uiFormName, out strUIFormPaths); // //根据“UI窗体名称”,加载“预设克隆体” // if (!string.IsNullOrEmpty(strUIFormPaths)) // { // goCloneUIPrefabs = ResourcesMgr.GetInstance().LoadAsset(strUIFormPaths, false); // } // //设置“UI克隆体”的父节点(根据克隆体中带的脚本中不同的“位置信息”) // if (_TraCanvasTransfrom != null && goCloneUIPrefabs != null) // { // baseUiForm = goCloneUIPrefabs.GetComponent<BaseUIForm>(); // if (baseUiForm == null) // { // Debug.Log("baseUiForm==null! ,请先确认窗体预设对象上是否加载了baseUIForm的子类脚本! 参数 uiFormName=" + uiFormName); // return null; // } // switch (baseUiForm.CurrentUIType.UIForms_Type) // { // case UIFormType.Normal: //普通窗体节点 // goCloneUIPrefabs.transform.SetParent(_TraNormal, false); // break; // case UIFormType.Fixed: //固定窗体节点 // goCloneUIPrefabs.transform.SetParent(_TraFixed, false); // break; // case UIFormType.PopUp: //弹出窗体节点 // goCloneUIPrefabs.transform.SetParent(_TraPopUp, false); // break; // default: // break; // } // //设置隐藏 // goCloneUIPrefabs.SetActive(false); // //把克隆体,加入到“所有UI窗体”(缓存)集合中。 // _DicALLUIForms.Add(uiFormName, baseUiForm); // return baseUiForm; // } // else // { // Debug.Log("_TraCanvasTransfrom==null Or goCloneUIPrefabs==null!! ,Plese Check!, 参数uiFormName="+uiFormName); // } // Debug.Log("出现不可以预估的错误,请检查,参数 uiFormName="+uiFormName); // return null; // }//Mehtod_end /// <summary> /// 加载指定名称的“UI窗体”,且使用“ABFW” 框架,升级改造为可以热更新的AB包的加载 /// 功能: /// 1:根据“UI窗体名称”,加载预设克隆体。 /// 2:根据不同预设克隆体中带的脚本中不同的“位置信息”,加载到“根窗体”下不同的节点。 /// 3:隐藏刚创建的UI克隆体。 /// 4:把克隆体,加入到“所有UI窗体”(缓存)集合中。 /// /// </summary> /// <param name="uiFormName">UI窗体名称</param> private void LoadUIForm(string uiFormName) { string strUIFormPaths = null; //UI窗体路径 _UIFormName = uiFormName; //根据UI窗体名称,得到对应的加载路径 _DicFormsPaths.TryGetValue(uiFormName, out strUIFormPaths); if (!string.IsNullOrEmpty(strUIFormPaths)) { //从路径配置文件中,来合成需要的ab包参数 string[] strTempArray = strUIFormPaths.Split('|'); ABPara abPara = new ABPara(); abPara.ScenesName = strTempArray[0]; abPara.AssetBundleName = strTempArray[1]; abPara.AssetName = strTempArray[2]; //初始化加载(根UI窗体) Canvas 预设 StartCoroutine(LoadABAsset(abPara, LoadUIForm_Process)); } }//Mehtod_end