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