Пример #1
0
 private void DrawBuildButtons()
 {
     if (GUILayout.Button("Android"))
     {
         EditorApplication.delayCall += delegate() { bundleBuilder.Execute(BuildTarget.Android); };
     }
     if (GUILayout.Button("iOS"))
     {
         EditorApplication.delayCall += delegate() { bundleBuilder.Execute(BuildTarget.iOS); };
     }
     {
         EditorGUILayout.BeginHorizontal();
         if (GUILayout.Button("Windows"))
         {
             EditorApplication.delayCall += delegate() { bundleBuilder.Execute(BuildTarget.StandaloneWindows); };
         }
         if (GUILayout.Button("Windows64"))
         {
             EditorApplication.delayCall += delegate() { bundleBuilder.Execute(BuildTarget.StandaloneWindows64); };
         }
         EditorGUILayout.EndHorizontal();
     }
     if (GUILayout.Button("OSX"))
     {
         EditorApplication.delayCall += delegate() { bundleBuilder.Execute(BuildTarget.StandaloneOSX); };
     }
 }
Пример #2
0
        public void Execute(BuildTargetGroup buildTargetGroup, BuildTarget buildTarget)
        {
            Config(buildTargetGroup, buildTarget);
            if (configButDontBuild)
            {
                return;
            }
            if (bundleBuilder != null)
            {
                bundleBuilder.Execute(buildTarget);
            }
            BuildPlayerOptions options = new BuildPlayerOptions();

            string[] scenePaths = new string[scenes.Length];
            for (int i = 0; i < scenePaths.Length; i++)
            {
                scenePaths[i] = AssetDatabase.GetAssetPath(scenes[i]);
            }
            options.scenes = scenePaths;
            if (string.IsNullOrEmpty(locationPathName))
            {
                locationPathName = EditorUtility.SaveFolderPanel("Choose Output Folder", "", "");
                if (string.IsNullOrEmpty(locationPathName))
                {
                    return;
                }
            }
            string path = locationPathName
                          .Replace(Wildcard_BuildTarget, buildTarget.ToString())
                          .Replace(Wildcard_BuildNumber, buildNumber.ToString())
                          .Replace(Wildcard_BundleIdentifier, bundleIdentifier)
                          .Replace(Wildcard_BundleVersion, bundleVersion)
                          .Replace(Wildcard_CompanyName, companyName)
                          .Replace(Wildcard_Date, DateTime.Now.ToString("yyyyMMdd"))
                          .Replace(Wildcard_ProductName, productName)
                          .Replace(Wildcard_Time, DateTime.Now.ToString("HHmmss"));

            switch (buildTarget)
            {
            case BuildTarget.StandaloneWindows:
                options.locationPathName = string.Format("{0}/{1}.exe", path, PlayerSettings.productName);
                break;

            case BuildTarget.StandaloneWindows64:
                options.locationPathName = string.Format("{0}/{1}.exe", path, PlayerSettings.productName);
                break;

            case BuildTarget.Android:
                options.locationPathName = string.Format("{0}.apk", path);
                break;

            default:
                options.locationPathName = path;
                break;
            }
            options.target  = buildTarget;
            options.options = BuildOptions.ShowBuiltPlayer;
#if UNITY_2018_1_OR_NEWER
            BuildReport report  = BuildPipeline.BuildPlayer(options);
            var         summary = report.summary;
            switch (summary.result)
            {
            case BuildResult.Failed:
                Debug.LogError("Build Failed");
                break;

            case BuildResult.Succeeded:
                Debug.Log("Build Succeeded");
                copyList.CopyFiles(path);
                break;
            }
#else
            Debug.Log(BuildPipeline.BuildPlayer(options));
            copyList.CopyFiles(path);
#endif
        }