/// <summary> /// 新组件 /// </summary> /// <param name="_msg"></param> private void NewComp(Message _msg) { m_currentCom = null; m_rNewImg = null; m_rNewModel = null; ComProperty newCom = new ComProperty(); m_currentCom = newCom; m_pComProperty.Add(newCom); }
/// <summary> /// 选择组件 /// </summary> /// <param name="_msg"></param> private void ComItemClick(Message _msg) { ComProperty cpp = _msg["com"] as ComProperty; m_currentCom = cpp; m_rNewImg = null; m_rNewModel = null; // 载入组件 LoadCompModelFromServer(cpp.m_strModelName, cpp.m_strModelCrc); }
/// <summary> /// 导入资源 /// </summary> /// <param name="_msg"></param> private void LoadRes(Message _msg) { if (m_currentCom == null) { LogicUtils.Instance.OnAlert("没有选中任何组件,不能导入资源!"); return; } CompView mv = _msg.Sender as CompView; if (mv == null) { return; } string strPath = LogicUtils.Instance.OnImportOneFile(); string strFileName = Utils.GetFileNameByPath(strPath).ToLower(); //Debug.LogWarning("当前文件路径:"+strPath+"--文件名:"+strFileName); string strFilePostName = Utils.GetFilePostfix(strPath).ToLower(); // 检测模型文件名 if (strFilePostName.Equals("fbx") || strFilePostName.Equals("assetbundle")) { if (!m_currentCom.m_bIsNew && !m_currentCom.m_strCode.ToLower().Equals(strFileName)) { LogicUtils.Instance.OnAlert("资源名和组件Code不一致,不能导入资源!"); return; } // 新组件,Code唯一性检测 if (m_currentCom.m_bIsNew && !IsLegalCode(strFileName)) { LogicUtils.Instance.OnAlert("新组件Code和已有组件重复!"); return; } } ResManager.Instance.OnLoadLocalRes(strPath, (rNode) => { switch (rNode.GetResType()) { case ResType.Texture: Texture2D tx = new Texture2D(500, 500); tx.LoadImage(rNode.GetResource() as byte[]); m_rNewImg = rNode as LocalResourceNode; if (mv != null) { mv.OnRefreshImg(tx, rNode.GetName()); } break; case ResType.Fbx: m_rNewModel = rNode as LocalResourceNode; ResManager.Instance.OnCreateFbx(m_rNewModel.GetResource() as byte[], (obj) => { CreateNewModel(obj, Utils.GetFilePrefix(m_rNewModel.GetName())); if (mv != null) { mv.OnRefreshModel(rNode.GetName(), m_currentCom.m_bIsNew); } }); break; case ResType.AssetBundle: m_rNewModel = rNode as LocalResourceNode; ResManager.Instance.OnLoadLocalAb(m_rNewModel.GetResource() as byte[], (ab) => { if (ab != null) { GameObject model = ab.LoadAsset <GameObject>(ab.GetAllAssetNames()[0]); if (model != null) { model = GameObject.Instantiate(model); CreateNewModel(model, Utils.GetFilePrefix(m_rNewModel.GetName())); if (mv != null) { mv.OnRefreshModel(rNode.GetName()); } } ab.Unload(false); } }); break; case ResType.Raw: break; default: break; } }); }