示例#1
0
    //--------------------------------------------------------------------------------------------
    // 生成对应文件的 Object 对象
    static public List <Object> BuildObjectList(ref BuildArgs vArgs, BundleVersionControl version, ref bool isNeedPackage)
    {
        isNeedPackage = false;
        string szPckNm = Path.GetFileName(vArgs.vPack);

        szPckNm = szPckNm.ToLower();
        List <Object> objList = new List <Object>();

        foreach (string fileName in vArgs.fAry)
        {
            string szt = fileName.ToLower();
            if (szt.EndsWith(".unity"))
            {
                Debug.LogWarning("BuildPipeline Skip file = " + fileName);
                continue;
            }
            if (szt.EndsWith(".unitypackage"))
            {
                Debug.LogWarning("BuildPipeline Skip file = " + fileName);
                continue;
            }

            string fl = ArchiveUtil.NtfPathBeginAssets(fileName);
            fl = fl.Replace('\\', '/');
            string szKey = ArchiveUtil.NtfPathAfterAssets(fl).ToLower();
            if (version != null && version.UpdateFileMD5(szKey, szPckNm) == false)
            {//MD5相同,不用打包
            }
            else
            {
                isNeedPackage = true;
            }

            Object obj = AssetDatabase.LoadMainAssetAtPath(fl);
            if (null == obj)
            {
                Debug.LogWarning("BuildPipeline LOAD failed file = " + fileName);
                continue;
            }
            objList.Add(obj);

            vArgs.kAry.Add(szKey);

            ResPackItm itm = new ResPackItm();
            itm.mType = 0;          // 普通资源
            itm.mfVer = 1;          //// 需要查找对应版本号
            itm.mFile = szKey;
            itm.mPack = szPckNm;
            vArgs.vTbl.Add(szKey, itm);
        }
        //更新package对应的版本号
        if (version != null && isNeedPackage)
        {
            version.IncreasePackageVersion(szPckNm);
        }
        return(objList);
    }
示例#2
0
    //--------------------------------------------------------------------------------------------
    //
    // 创建对应 平台的 AssetBundle 文件
    //
    // 根据目录构建. 注意: 忽略 ArchiveUtil.mSkips 里相关的
    static public bool ExportToBundle(string szPath, string saveFile, BuildTarget tgt, BundleVersionControl version = null)
    {
        List <string> fList = ArchiveUtil.NtfGetFiles(szPath, true);

        return(ExportToBundle(fList, saveFile, tgt, version));
    }
示例#3
0
    // 根据文件列表构建
    static public bool ExportToBundle(List <string> fList, string saveFile, BuildTarget tgt, BundleVersionControl version = null)
    {
        BuildArgs vArgs = new BuildArgs();

        vArgs.vPack = saveFile;
        vArgs.fAry  = fList;

        //检查文件对应的MD5与当前版本里的MD5是否对应,如果不对应,则加入打包列表,并且修改对应的包的版本号
        bool          isNeedPackage = false;
        List <Object> objList       = BuildObjectList(ref vArgs, version, ref isNeedPackage);

        if (isNeedPackage)
        {
            if (BuildAssetBundleWithNames(objList, vArgs.kAry, saveFile, tgt))
            {
                WriteResList(vArgs.vTbl, tgt);
                return(true);
            }
            return(false);
        }
        return(true);
    }
示例#4
0
    //--------------------------------------------------------------------------------------------
    // 生成普通资源包
    static public void BuildGamePack(string file, List <string> fLst, BuildTarget tgt, bool silence, BundleVersionControl version)
    {
        file = file.ToLower();
        string szNm = GetTargetName(tgt);
        string msg  = @"确定要生成 " + szNm + @" 客户端资源包吗? 这个过程可能会很漫长";

        if (silence || EditorUtility.DisplayDialog(@"游戏版本发布", msg, "Ok", "Cancel"))
        {
            if (AssetBundleUtil.ExportToBundle(fLst, file, tgt, version))
            {
                msg = szNm + @" 客户端资源包已生成, 存放于: " + file;
                if (!silence)
                {
                    EditorUtility.DisplayDialog(@"操作已完成", msg, "Ok");
                }
                else
                {
                    Debug.Log(msg);
                }
            }
            else
            {
                msg = szNm + @" 客户端资源包生成失败,是否继续???";
                for (int i = 0; i < fLst.Count; i++)
                {
                    msg += "\r\n" + fLst[i];
                }
                //EditorUtility.DisplayDialog(@"操作失败", msg, "Ok");
                if (!EditorUtility.DisplayDialog(@"操作失败", msg, "Ok", "Cancel"))
                {
                    throw new System.Exception("error file:" + file);
                }
            }
        }
    }