public static void BuildPlayer()
    {
        var outputPath = EditorUtility.SaveFolderPanel("Choose Location of the Built Game", "", "");

        if (outputPath.Length == 0)
        {
            return;
        }

        string[] levels = GetLevelsFromBuildSettings();
        if (levels.Length == 0)
        {
            Debug.Log("Nothing to build.");
            return;
        }

        string targetName = GetBuildTargetName(EditorUserBuildSettings.activeBuildTarget);

        if (targetName == null)
        {
            return;
        }

        // Build and copy AssetBundles.
        BuildScript.BuildAssetBundles();
        BuildScript.CopyAssetBundlesTo(Path.Combine(Application.streamingAssetsPath, kAssetBundlesOutputPath));

        BuildOptions option = EditorUserBuildSettings.development ? BuildOptions.Development : BuildOptions.None;

        BuildPipeline.BuildPlayer(levels, outputPath + targetName, EditorUserBuildSettings.activeBuildTarget, option);
    }
Esempio n. 2
0
    //	version xml file
    ///////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////
    //	assets xml file
    void SaveAssetsXML(List <FileInfo> listNew, List <FileInfo> listModify, List <FileInfo> listRemoved)
    {
        XmlDocument xmlDoc = new XmlDocument();
        XmlNode     root   = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);

        xmlDoc.AppendChild(root);

        XmlNode nodeMain = xmlDoc.CreateElement("AssetBundles");

        XmlNode      nodeVer = xmlDoc.CreateElement("VERSION");
        XmlAttribute attrVer = xmlDoc.CreateAttribute("value");

        attrVer.Value = "VER_" + lastMajorVersion.ToString("D2") + "_" + lastMinorVersion.ToString("D3");
        nodeVer.Attributes.Append(attrVer);
        nodeMain.AppendChild(nodeVer);

        {
            XmlNode nodeCreate = xmlDoc.CreateElement("CREATE");
            foreach (FileInfo info in listNew)
            {
                XmlNode      nodeFILE = xmlDoc.CreateElement("FILE");
                XmlAttribute attrName = xmlDoc.CreateAttribute("name");
                attrName.Value = info.Name;
                nodeFILE.Attributes.Append(attrName);
                nodeCreate.AppendChild(nodeFILE);
            }
            nodeMain.AppendChild(nodeCreate);
        }

        {
            XmlNode nodeModify = xmlDoc.CreateElement("MODIFY");
            foreach (FileInfo info in listModify)
            {
                XmlNode      nodeFILE = xmlDoc.CreateElement("FILE");
                XmlAttribute attrName = xmlDoc.CreateAttribute("name");
                attrName.Value = info.Name;
                nodeFILE.Attributes.Append(attrName);
                nodeModify.AppendChild(nodeFILE);
            }
            nodeMain.AppendChild(nodeModify);
        }

        {
            XmlNode nodeRemove = xmlDoc.CreateElement("REMOVE");
            foreach (FileInfo info in listRemoved)
            {
                XmlNode      nodeFILE = xmlDoc.CreateElement("FILE");
                XmlAttribute attrName = xmlDoc.CreateAttribute("name");
                attrName.Value = info.Name;
                nodeFILE.Attributes.Append(attrName);
                nodeRemove.AppendChild(nodeFILE);
            }
            nodeMain.AppendChild(nodeRemove);
        }

        xmlDoc.AppendChild(nodeMain);

        string xmlFullpath = CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + "VER_" + lastMajorVersion.ToString("D2") + "/" + lastMinorVersion.ToString("D3") + "/" + CommonPatcherData.assetbundleFN;

        XmlTool.writeXml(xmlFullpath, xmlDoc);

        //	backup all AssetBundles from "repopath/ostype/latest/"  to "repopath/ostype/latest_ver_XX_XXX"
        string latest     = CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.lastVersionRepo;
        string backuppath = CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.lastVersionRepo + "_VER_" + lastMajorVersion.ToString("D2") + "_" + lastMinorVersion.ToString("D3");

        if (lastMajorVersion != 0 || lastMinorVersion != 0)
        {
            //Directory.CreateDirectory(backuppath);
            Directory.Move(latest, backuppath);
            Directory.CreateDirectory(latest);
        }

        // copy all AssetBundles to "repopath/ostype/latest/"
        BuildScript.CopyAssetBundlesTo(CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + CommonPatcherData.lastVersionRepo);

        // copy some assetbundles for patching to "repopath/ostype/ver_xx/xxx/
        string vertargetPath = CommonPatcherData.repoPath + "/" + EditorUserBuildSettings.activeBuildTarget + "/" + "VER_" + lastMajorVersion.ToString("D2") + "/" + lastMinorVersion.ToString("D3");

        foreach (FileInfo info in listNew)
        {
            File.Copy(info.FullName, vertargetPath + "/" + info.Name);
        }
        foreach (FileInfo info in listModify)
        {
            File.Copy(info.FullName, vertargetPath + "/" + info.Name);
        }
        foreach (FileInfo info in listRemoved)
        {
            File.Copy(info.FullName, vertargetPath + "/" + info.Name);
        }
    }