Example #1
0
        public void BuildPlayer(BuildTarget buildTarget)
        {
            BuildTargetGroup buildGroup = GetGroup(buildTarget);

            if (!CheckTarget(buildGroup))
            {
                return;
            }

            if (string.IsNullOrEmpty(locationPathName))
            {
                locationPathName = EditorUtility.SaveFolderPanel("Choose Output Folder", "", "");
                if (string.IsNullOrEmpty(locationPathName))
                {
                    return;
                }
            }
            string path = HandleWildcards(locationPathName, buildTarget);

            string projectSettingsPath = Application.dataPath.Substring(0, Application.dataPath.Length - "Assets".Length) + "/ProjectSettings/ProjectSettings.asset";
            string oldSettings         = File.ReadAllText(projectSettingsPath);

            ConfigTargetGroup(buildGroup);
            if (bundleBuilder != null)
            {
                bundleBuilder.Execute(buildTarget);
            }

#if UNITY_2018_1_OR_NEWER
            BuildReport report  = BuildPipeline.BuildPlayer(GetBuildOptions(path));
            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
            File.WriteAllText(projectSettingsPath, oldSettings);

            if (buildNumberIncrement)
            {
                buildNumber++;
                EditorUtility.SetDirty(this);
            }
        }
Example #2
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            EZEditorGUIUtility.ScriptableObjectTitle(target as ScriptableObject, !serializedObject.isEditingMultipleObjects);

            if (!serializedObject.isEditingMultipleObjects)
            {
                EditorGUILayout.LabelField("Build", EditorStyles.boldLabel);
                EditorGUILayout.PropertyField(m_BuildTarget);
                if (GUILayout.Button("Build"))
                {
                    EditorApplication.delayCall += delegate() { bundleBuilder.Execute((BuildTarget)m_BuildTarget.intValue); };
                }
                EditorGUILayout.Space();
                DrawQuickBuildButtons();
                EditorGUILayout.Space();
            }

            EditorGUILayout.LabelField("Build Options", EditorStyles.boldLabel);
            DrawBaseProperties();

            if (m_CopyListFoldout.boolValue = EditorGUILayout.Foldout(m_CopyListFoldout.boolValue, string.Format("Copy List ({0})", copyList.count)))
            {
                copyList.DoLayoutList();
            }

            if (m_ManagerMode.boolValue)
            {
                EditorGUILayout.BeginHorizontal();
                string label = string.Format("Bundle List ({0})", AssetDatabase.GetAllAssetBundleNames().Length);
                m_BundleListFoldout.boolValue = EditorGUILayout.Foldout(m_BundleListFoldout.boolValue, label);
                EditorGUILayout.EndHorizontal();
                if (m_BundleListFoldout.boolValue)
                {
                    DrawAssetBundleManager();
                }
            }
            else
            {
                EditorGUILayout.BeginHorizontal();
                string label = string.Format("Bundle List ({0})", bundleList.count);
                m_BundleListFoldout.boolValue = EditorGUILayout.Foldout(m_BundleListFoldout.boolValue, label);
                EditorGUILayout.EndHorizontal();
                if (m_BundleListFoldout.boolValue)
                {
                    bundleList.DoLayoutList();
                }
            }

            serializedObject.ApplyModifiedProperties();
        }
Example #3
0
        public void Execute(BuildTarget buildTarget)
        {
            ConfigTargetGroup(GetGroup(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;
#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
        }
        public void Execute(BuildTarget buildTarget)
        {
            BuildTargetGroup selectedGroup = GetGroup(EditorUserBuildSettings.activeBuildTarget);
            BuildTargetGroup buildGroup    = GetGroup(buildTarget);

            if (selectedGroup != buildGroup)
            {
                string message = string.Format("Selected BuildTargetGroup is {0}, build {1} anyway?", selectedGroup, buildTarget);
                if (!EditorUtility.DisplayDialog("BuildTarget Not Match with selected BuildTargetGroup", message, "Yes", "Cancel"))
                {
                    Debug.Log("Build Canceled");
                    return;
                }
            }

            ConfigTargetGroup(buildGroup);
            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 = HandleWildcards(locationPathName, buildTarget);

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

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

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

            default:
                options.locationPathName = path;
                break;
            }
            options.target  = buildTarget;
            options.options = buildOptions;
#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
            if (buildNumberIncrement)
            {
                buildNumber++;
                EditorUtility.SetDirty(this);
            }
        }