Exemplo n.º 1
0
    //-----------------------------------------------------------------------------
    public static string NtfPack(List <string> vPths, List <string> vfAry, string file, BuildTarget tgt, bool silence
                                 , GameBundleVersionControl version, PackageVersion.Version cfgVersion)
    {
        List <string> fAry = new List <string>();

        if (vfAry != null)
        {
            fAry.AddRange(vfAry);
        }
        foreach (string sPth in vPths)
        {
            List <string> vfs = ArchiveUtil.NtfGetFiles(sPth, true, ArchiveUtil.mSkips);
            fAry.AddRange(vfs);
        }

        BuildGameCMD.BuildGamePack(file, fAry, tgt, silence, version);
        string packageName = Path.GetFileName(file);

        packageName = packageName.ToLower();
        if (version.m_version.HavePackage(packageName))
        {
            PackageVersion.Version v = version.m_version.LookupPackageVersion(packageName);
            v.m_isExternPackage  = cfgVersion.m_isExternPackage;
            v.m_isAliveInRuntime = cfgVersion.m_isAliveInRuntime;
            version.m_version.AddPackage(packageName, v);
        }
        return(packageName);
    }
Exemplo n.º 2
0
    //--------------------------------------------------------------------------------------------
    // 保存资源列表, 存在则合并
    public static void WriteResList(Dictionary <string, ResPackItm> tbl, BuildTarget tgt)
    {
        Dictionary <string, ResPackItm> ntbl = tbl;
        string sPth = BuildGameCMD.GetBuildFolder(tgt);

        sPth = sPth.Replace("\\", "/");
        if (!sPth.EndsWith("/"))
        {
            sPth += "/";
        }
        string sf = sPth + ResPath.GetResListTxt();

        if (File.Exists(sf))
        {
            try
            {
                FileStream stm = new FileStream(sf, FileMode.Open, FileAccess.Read);
                if (stm.Length > 0)
                {
                    byte[] vAry = new byte[stm.Length];
                    stm.Read(vAry, 0, vAry.Length);
                    Dictionary <string, ResPackItm> otbl = ResUtil.ReadResTable(vAry);
                    ntbl = ResUtil.ReplaceAndMergeResTable(tbl, otbl);
                }
                stm.Close();
            }
            catch (Exception exp)
            {
                Debug.LogWarning("CAN NOT Open file = " + sf + ", Msg = " + exp.Message);
            }
        }
        ResUtil.WriteResTable(sf, ntbl);
    }
Exemplo n.º 3
0
    //-----------------------------------------------------------------------------
    // 打包场景(*.unity)资源
    public void OnBuildScene(BuildTarget tgt)
    {
        List <string>  vScn  = new List <string>();
        List <TglItem> vItms = mScnCtrl.GetSelItems();

        foreach (TglItem itm in vItms)
        {
            string sf = GetGamePath() + itm.mName;
            vScn.Add(sf);
        }

        string szTgtNm = BuildGameCMD.GetTargetName(tgt);
        string szPath  = BuildGameCMD.GetBuildFolder(tgt);

        string szDefaultPath = BuildGameCMD.GetBuildFolder(mGmWind.GetTarget());
        string saveFolder    = EditorUtility.SaveFolderPanel("Save Pack File", szDefaultPath, "");

        if (saveFolder == "")
        {
            return;
        }
        m_versionControl.LoadProject(saveFolder);
        if (mbSingle)
        {
            string file = EditorUtility.SaveFilePanel("Save Scene File", szPath, mGame + szTgtNm, "unity3d");
            if (file.Length > 0)
            {
                BuildGameCMD.BuildGameScene(file, vScn, tgt, m_versionControl);
            }
        }
        else
        {
            string szMsg;
            int    nCount = 0;
            foreach (string sf in vScn)
            {
                string nsf = szPath + "/" + ArchiveUtil.GetFileName(sf) + ".unity3d";
                szMsg = BuildGameCMD.BuildGameScene(nsf, sf, tgt, m_versionControl);
                if (!string.IsNullOrEmpty(szMsg))
                {
                    Debug.LogWarning("BuildGameScene Msg = " + szMsg);
                }
                else
                {
                    ++nCount;
                }
            }
            szMsg  = @"消息: 成功打包 [";
            szMsg += (nCount.ToString() + @"] 个场景, 有 [");
            szMsg += ((vScn.Count - nCount).ToString() + @"] 个场景打包失败");
            EditorUtility.DisplayDialog(@"操作已结束", szMsg, "Ok");
        }
        m_versionControl.SaveProject(saveFolder);
    }
Exemplo n.º 4
0
    void NtfIncreaseVersion()
    {
        string szDefaultPath = BuildGameCMD.GetBuildFolder(mGmWind.GetTarget());
        string saveFolder    = EditorUtility.SaveFolderPanel("Open project", szDefaultPath, "");

        if (saveFolder == "")
        {
            return;
        }
        m_versionControl.LoadProject(saveFolder);
        m_versionControl.IncreaseAllVersion();
        m_versionControl.SaveProject(saveFolder);
        EditorUtility.DisplayDialog(@"操作提示", @"所有包的版本号已经增加", "Ok");
    }
Exemplo n.º 5
0
    //--------------------------------------------------------------------------------------------
    // 临时版本, 资源拷贝 Resources/ 目录下, 完成之后删除
    public bool BuildTempGame(BuildTarget tgt)
    {
        // 保存路径
        string szTgtNm = BuildGameCMD.GetTargetName(tgt);
        string szPath  = BuildGameCMD.GetBuildFolder(tgt);
        string szEx    = BuildGameCMD.GetTargetExt(tgt);
        string szTitle = "Save " + szTgtNm + " App";
        string szApp   = szTgtNm + "_" + mGame;
        string file    = EditorUtility.SaveFilePanel(szTitle, szPath, szApp, szEx);

        if (file.Length > 0)
        {
            //string sPth = "Assets/" + mPath;   // 原始资源目录
            string dPth = "Assets/Resources/";
            //string dfil = "Assets/Resources.meta";

            // 若存在则删除
            //if (File.Exists(dfil)) FileUtil.DeleteFileOrDirectory(dfil);
            //if (Directory.Exists(dPth)) FileUtil.DeleteFileOrDirectory(dPth);
            //AssetDatabase.Refresh();
            //ArchiveUtil.NtfCopyFiles(sPth, dPth);   // 拷贝文件, 内部有过滤
            //AssetDatabase.Refresh();


            List <string> vAry = ArchiveUtil.NtfGetFiles(dPth, true, "*.unity"); // 搜索场景文件
            foreach (string sf in vAry)                                          // 找到启动用场景
            {
                string ft = sf.ToLower();
                //if (ft.Contains("launch"))
                if (ft.Contains("demo-summer-a-am"))
                {
                    vAry.Remove(sf);
                    vAry.Insert(0, sf);
                    break;
                }
            }
            BuildGameCMD.BuildGamePlayer(file, vAry, tgt, true);
            // 结束后删除这些文件
            //if (Directory.Exists(dPth)) FileUtil.DeleteFileOrDirectory(dPth);
            //if (File.Exists(dfil)) FileUtil.DeleteFileOrDirectory(dfil);
            //AssetDatabase.Refresh();
            return(true);
        }
        return(false);
    }
Exemplo n.º 6
0
    //-----------------------------------------------------------------------------
    public static void NtfPackEachFile(string srcFolder, string targetFolder, BuildTarget tgt, bool silence
                                       , GameBundleVersionControl version, PackageVersion.Version cfgVersion)
    {
        List <string> allNeedPackedFile = ArchiveUtil.NtfGetFiles(srcFolder, true, ArchiveUtil.mSkips);
        List <string> procFileList      = new List <string>();
        string        targetPackFile;

        foreach (string singleFile in allNeedPackedFile)
        {
            procFileList.Clear();
            procFileList.Add(singleFile);
            string[] pathsOfThisFile = singleFile.Split(new char[] { '/', '\\' }, System.StringSplitOptions.RemoveEmptyEntries);
            if (pathsOfThisFile.Length < 3)
            {
                targetPackFile = singleFile.Replace('/', '_');
                targetPackFile = targetPackFile.Replace('\\', '_');
                targetPackFile = targetFolder + "/" + targetPackFile + ".pack";
            }
            else
            {
                targetPackFile = targetFolder + "/";
                for (int i = 2; i < pathsOfThisFile.Length; i++)
                {
                    targetPackFile += "_" + pathsOfThisFile[i];
                }
                targetPackFile += ".pack";
            }
            targetPackFile = targetPackFile.Replace(" ", "");
            targetPackFile = targetPackFile.ToLower();
            string packageName = Path.GetFileName(targetPackFile);
            packageName = packageName.ToLower();
            BuildGameCMD.BuildGamePack(targetPackFile, procFileList, tgt, silence, version);
            if (version.m_version.HavePackage(packageName))
            {
                PackageVersion.Version v = version.m_version.LookupPackageVersion(packageName);
                v.m_isExternPackage  = cfgVersion.m_isExternPackage;
                v.m_isAliveInRuntime = cfgVersion.m_isAliveInRuntime;
                version.m_version.AddPackage(packageName, v);
            }
        }
    }
Exemplo n.º 7
0
    void NtfBuildResPack()
    {
        string sPth = GetGamePath();

        if (m_useConfig)
        {
            //sPth = Application.dataPath+"/";
        }
        List <string>  vPths         = mGmWind.GetPublicPath(false); // 选中的公共资源列表
        List <string>  vfs           = ArchiveUtil.NtfGetFiles(sPth, false, ArchiveUtil.mSkips);
        List <TglItem> vItms         = mPthCtrl.GetSelItems();
        string         szDefaultPath = BuildGameCMD.GetBuildFolder(mGmWind.GetTarget());
        string         saveFolder    = EditorUtility.SaveFolderPanel("Save Pack File", szDefaultPath, "");

        if (saveFolder == "")
        {
            return;
        }
        m_versionControl.LoadProject(saveFolder);
        foreach (TglItem itm in vItms)
        {
            string selPath = itm.mName;
            vPths.Clear();
            vPths.Add(sPth + selPath);
            string saveFileName = saveFolder + "/" + selPath.Replace('/', '_') + ".pack";
            PackageVersion.Version cfgPackage = new PackageVersion.Version();
            cfgPackage.Init();
            cfgPackage.m_isAliveInRuntime = itm.m_isPackedAlive;
            cfgPackage.m_isExternPackage  = itm.m_isPackedExtern;
            if (itm.mIsPackedEachFile)
            {
                NtfPackEachFile(sPth + selPath, saveFolder, mGmWind.GetTarget(), true, m_versionControl, cfgPackage);
            }
            else
            {
                NtfPack(vPths, vfs, saveFileName, mGmWind.GetTarget(), true, m_versionControl, cfgPackage);
            }
        }
        m_versionControl.SaveProject(saveFolder);
        EditorUtility.DisplayDialog(@"操作提示", @"打包完成", "Ok");
    }
Exemplo n.º 8
0
    //-----------------------------------------------------------------------------
    // 构建游戏启动程序
    public void OnBuildPlayer(BuildTarget tgt, string sLaunch)
    {
        string szTgtNm = BuildGameCMD.GetTargetName(tgt);
        string szPath  = BuildGameCMD.GetBuildFolder(tgt);
        string szEx    = BuildGameCMD.GetTargetExt(tgt);
        string szTitle = "Save " + szTgtNm + " App";
        string szApp   = szTgtNm + "_" + mGame;
        string file    = "";

        if (BuildTarget.iOS == tgt)  // 取目录
        {
            file = EditorUtility.SaveFolderPanel(szTitle, szPath, mGame);
        }
        else  // 取文件
        {
            file = EditorUtility.SaveFilePanel(szTitle, szPath, szApp, szEx);
        }

        if (file.Length > 0)
        {
            BuildGameCMD.BuildGamePlayer(file, sLaunch, tgt, false);
        }
    }