示例#1
0
 // refresh checks whenever inspector updates
 void OnInspectorUpdate()
 {
     if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Lumin)
     {
         if (EditorUserBuildSettings.GetPlatformSettings("Lumin", "SDKPath") != "")
         {
             isSDKSet = true;
             sdkPath  = EditorUserBuildSettings.GetPlatformSettings("Lumin", "SDKPath");
             if (PlayerSettings.Lumin.CertificatePath != "")
             {
                 isLicenseSet    = true;
                 licenseFullPath = PlayerSettings.Lumin.CertificatePath;
             }
             else
             {
                 isLicenseSet = false;
             }
         }
         else
         {
             isSDKSet = false;
         }
         isLumin = true;
     }
     else
     {
         isLumin = false;
     }
 }
示例#2
0
    public static void Test()
    {
        Debug.Log("old:" + EditorUserBuildSettings.GetPlatformSettings("", "metroPackageVersion"));
        Debug.Log("Test:" + EditorPrefs.GetString("metroPackageVersion"));

        Debug.Log(";;:" + EditorUserSettings.GetConfigValue("metroPackageVersion"));
    }
示例#3
0
        public virtual void UpdateBootConfig(BuildTarget target, BootConfigData config, BuildOptions options)
        {
            config.Set("wait-for-native-debugger", "0");
            if (config.Get("player-connection-debug") == "1")
            {
                if (EditorUserBuildSettings.GetPlatformSettings(BuildPipeline.GetBuildTargetName(target),
                                                                BuildPlayerWindow.kSettingDebuggingWaitForManagedDebugger) == "true")
                {
                    config.Set("wait-for-managed-debugger", "1");
                }
                else
                {
                    config.Set("wait-for-managed-debugger", "0");
                }
            }

            if (EditorApplication.scriptingRuntimeVersion == ScriptingRuntimeVersion.Latest)
            {
                config.Set("scripting-runtime-version", "latest");
            }

            bool isVrEnabled = UnityEditorInternal.VR.VREditor.GetVREnabledOnTargetGroup(BuildPipeline.GetBuildTargetGroup(target));

            config.Set("vr-enabled", isVrEnabled ? "1" : "0");
            if (isVrEnabled)
            {
                string[] vrDevices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTarget(target);
                if (vrDevices.Length > 0)
                {
                    string vrDeviceList = String.Join(",", vrDevices);
                    config.Set("vr-device-list", vrDeviceList);
                }
            }
        }
示例#4
0
        public static void OnPostprocessBuild(BuildTarget target, string path)
        {
#if UNITY_IOS || UNITY_TVOS || UNITY_STANDALONE_OSX
            Debug.Log(string.Format("[HovelHouse.CloudKit] building for target: '{0}'", target));

            bool isXCodeTarget = false;

            if (target == BuildTarget.iOS || target == BuildTarget.tvOS)
            {
                isXCodeTarget = true;
            }
            else if (target == BuildTarget.StandaloneOSX)
            {
                // xcode for MacOS builds not supported before this version
#if UNITY_2019_3_OR_NEWER
                string setting = EditorUserBuildSettings.GetPlatformSettings("OSXUniversal", "CreateXcodeProject");
                bool.TryParse(setting, out isXCodeTarget);
#endif
            }

            if (isXCodeTarget)
            {
                PostProcessXCodeProject(path);
            }
            else if (target == BuildTarget.StandaloneOSX)
            {
                PostProcessMacOS(path);
            }
#endif
        }
示例#5
0
        void OnGUI()
        {
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();
            if (string.IsNullOrEmpty(m_bundlePath))
            {
                m_bundlePath = EditorUserBuildSettings.GetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath");
            }
            var bp = GUILayout.TextField(m_bundlePath);

            if (bp != m_bundlePath)
            {
                EditorUserBuildSettings.SetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath", m_bundlePath = bp);
            }
            if (GUILayout.Button("Browse"))
            {
                BrowseForFolder();
            }
            GUILayout.EndHorizontal();

            m_ForceRebuild = GUILayout.Toggle(m_ForceRebuild, "Force Rebuild/Clear Bundle Folder");
            m_buildTarget  = (BuildTarget)EditorGUILayout.EnumPopup("Target", m_buildTarget);
            m_options      = (BuildAssetBundleOptions)EditorGUILayout.EnumMaskPopup("Options", m_options);

            if (GUILayout.Button("Build"))
            {
                if (string.IsNullOrEmpty(m_bundlePath))
                {
                    BrowseForFolder();
                }

                if (m_ForceRebuild)
                {
                    if (EditorUtility.DisplayDialog("File delete confirmation", "Do you want to delete all files in the directory " + m_bundlePath + "?", "Yes", "No"))
                    {
                        try
                        {
                            if (Directory.Exists(m_bundlePath))
                            {
                                Directory.Delete(m_bundlePath, true);
                            }
                        }
                        catch (System.Exception e)
                        {
                            Debug.LogException(e);
                        }
                    }
                }
                if (!Directory.Exists(m_bundlePath))
                {
                    Directory.CreateDirectory(m_bundlePath);
                }
                BuildPipeline.BuildAssetBundles(m_bundlePath, m_options, m_buildTarget);
                AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
                // m_showSummary = true;
            }
            GUILayout.EndVertical();
        }
示例#6
0
        public virtual void UpdateBootConfig(BuildTarget target, BootConfigData config, BuildOptions options)
        {
            config.Set("wait-for-native-debugger", "0");
            if (config.Get("player-connection-debug") == "1")
            {
                if (EditorUserBuildSettings.GetPlatformSettings(BuildPipeline.GetBuildTargetName(target),
                                                                BuildPlayerWindow.kSettingDebuggingWaitForManagedDebugger) == "true")
                {
                    config.Set("wait-for-managed-debugger", "1");
                }
                else
                {
                    config.Set("wait-for-managed-debugger", "0");
                }
            }

            if (EditorApplication.scriptingRuntimeVersion == ScriptingRuntimeVersion.Latest)
            {
                config.Set("scripting-runtime-version", "latest");
            }
            else
            {
                config.Set("scripting-runtime-version", "legacy");
            }

            string checkVREnabled = config.Get("vr-enabled");

            if (String.IsNullOrEmpty(checkVREnabled) || String.Compare("0", checkVREnabled, true) == 0)
            {
                bool isVrEnabled = UnityEditorInternal.VR.VREditor.GetVREnabledOnTargetGroup(BuildPipeline.GetBuildTargetGroup(target));
                config.Set("vr-enabled", isVrEnabled ? "1" : "0");
                if (isVrEnabled)
                {
                    string[] vrDevices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTarget(target);
                    if (vrDevices.Length > 0)
                    {
                        string vrDeviceList = String.Join(",", vrDevices);
                        config.Set("vr-device-list", vrDeviceList);
                    }
                }
            }
            config.Set("hdr-display-enabled", PlayerSettings.useHDRDisplay ? "1" : "0");
            if (BuildPipeline.IsFeatureSupported("ENABLE_SCRIPTING_GC_WBARRIERS", target))
            {
                if (PlayerSettings.gcWBarrierValidation)
                {
                    config.AddKey("validate-write-barriers");
                }
                if (PlayerSettings.gcIncremental)
                {
                    config.Set("gc-max-time-slice", "3");
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        static void EnsureOSXArchitecture()
        {
            var platformName = BuildPipeline.GetBuildTargetName(BuildTarget.StandaloneOSX);
            var architecture = EditorUserBuildSettings.GetPlatformSettings(platformName, "Architecture");

            // throws exception when selecting  "ARM64" or "x64ARM64" for the architecture
            if (architecture != "x64")
            {
                Debug.LogWarning(
                    $"Apple Silicon architecture is not supported by WebRTC package" +
                    $"Currently set to {architecture}");
            }
        }
        public void OnGUI(Rect pos)
        {
            //options
            EditorGUILayout.Space();
            GUILayout.BeginVertical();
            m_buildTarget     = (ValidBuildTarget)EditorGUILayout.EnumPopup("Target", m_buildTarget);
            m_options         = (BuildAssetBundleOptions)EditorGUILayout.EnumMaskPopup("Options", m_options);
            m_ForceRebuild    = GUILayout.Toggle(m_ForceRebuild, "Clear all build folders on build");
            m_CopyToStreaming = GUILayout.Toggle(m_CopyToStreaming, "Copy bundles to " + m_streamingPath);


            //output path
            EditorGUILayout.Space();
            m_UseDefaultPath = GUILayout.Toggle(m_UseDefaultPath, "Use default output directory.");
            GUILayout.BeginHorizontal();
            if (string.IsNullOrEmpty(m_outputPath))
            {
                m_outputPath = EditorUserBuildSettings.GetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath");
            }

            var origPath = m_outputPath;

            if (m_UseDefaultPath)
            {
                m_outputPath  = "AssetBundles/";
                m_outputPath += m_buildTarget.ToString();
                GUILayout.Label("Output Directory:  ");
                GUILayout.Label(m_outputPath);
            }
            else
            {
                GUILayout.Label("Output Directory:  ");
                m_outputPath = GUILayout.TextArea(m_outputPath);
            }
            if (m_outputPath != origPath)
            {
                EditorUserBuildSettings.SetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath", m_outputPath);
            }
            GUILayout.EndHorizontal();
            EditorGUILayout.Space();



            // build.
            EditorGUILayout.Space();
            if (GUILayout.Button("Build"))
            {
                ExecuteBuild();
            }
            GUILayout.EndVertical();
        }
示例#9
0
        internal static string GetPathToGlobalGameManagersAsset(BuildTarget buildTarget, string buildPath)
        {
            if ((int)buildTarget == 2)
            {
                return(GetPathForMac(buildPath));
            }

#if UNITY_2018_2_OR_NEWER
            if (EditorUserBuildSettings.GetPlatformSettings("Standalone", "CreateSolution").Equals("true"))
            {
                return(GetPathForVSProjectWindowsAndLinuxStandalone(buildPath));
            }
#endif
            return(GetPathForWindowsAndLinuxStandalone(buildPath));
        }
 public virtual void UpdateBootConfig(BuildTarget target, BootConfigData config, BuildOptions options)
 {
     config.Set("wait-for-native-debugger", "0");
     if (config.Get("player-connection-debug") == "1")
     {
         if (EditorUserBuildSettings.GetPlatformSettings(BuildPipeline.GetBuildTargetName(target), "WaitForManagedDebugger") == "true")
         {
             config.Set("wait-for-managed-debugger", "1");
         }
         else
         {
             config.Set("wait-for-managed-debugger", "0");
         }
     }
 }
示例#11
0
        static bool IsValidBuildTarget(BuildTarget target)
        {
            if (target == BuildTarget.iOS ||
                target == BuildTarget.tvOS)
            {
                return(true);
            }

            if (target == BuildTarget.StandaloneOSX &&
                EditorUserBuildSettings.GetPlatformSettings("OSXUniversal", "CreateXcodeProject") == "true")
            {
                return(true);
            }

            return(false);
        }
示例#12
0
            public override void Update(VisualElement root)
            {
                base.Update(root);

                var content = root.Q("content");
                var table   = AddTable(content);

                // Build target - Windows
                MakeRow(table, "Active target - Windows",
                        () => (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows) || (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64),
                        () => { EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows64); });

                // Scripting backend - IL2CPP
                MakeRow(table, "Scripting Backend",
                        () => PlayerSettings.GetScriptingBackend(BuildTargetGroup.Standalone) == ScriptingImplementation.IL2CPP,
                        () => { PlayerSettings.SetScriptingBackend(BuildTargetGroup.Standalone, ScriptingImplementation.IL2CPP); });

                // Copy PDB files
                MakeRow(table, "Copy PDB files",
                        () => EditorUserBuildSettings.GetPlatformSettings("Standalone", kSettingCopyPDBFiles).ToLower() == "true",
                        () => { EditorUserBuildSettings.SetPlatformSettings("Standalone", kSettingCopyPDBFiles, "true"); });
            }
        public void OnGUI(Rect pos)
        {
            m_scrollPosition = EditorGUILayout.BeginScrollView(m_scrollPosition);
            bool newState = false;

            //basic options
            EditorGUILayout.Space();
            GUILayout.BeginVertical();

            m_buildTarget = ABBuilder.Instance.CurBuildPlatform;
            EditorGUILayout.TextField(m_TargetContent, m_buildTarget.ToString());

            EditorPrefs.SetInt(kBuildPrefPrefix + "BuildTarget", (int)m_buildTarget);

            m_outputPath = ABBuilder.Instance.GetPathPrefix_Assetbundle();
            EditorUserBuildSettings.SetPlatformSettings(ABBuilder.GetCurrentBuildPlatformName(), "AssetBundleOutputPath", m_outputPath);

            //output path
            EditorGUILayout.Space();
            GUILayout.BeginHorizontal();
            var newPath = EditorGUILayout.TextField("Output Path", m_outputPath);

            if (newPath != m_outputPath)
            {
                m_useDefaultPath = false;
                m_outputPath     = newPath;
                EditorUserBuildSettings.SetPlatformSettings(ABBuilder.GetCurrentBuildPlatformName(), "AssetBundleOutputPath", m_outputPath);
            }

            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            if (string.IsNullOrEmpty(m_outputPath))
            {
                m_outputPath = EditorUserBuildSettings.GetPlatformSettings(ABBuilder.GetCurrentBuildPlatformName(), "AssetBundleOutputPath");
            }
            GUILayout.EndHorizontal();
            EditorGUILayout.Space();

            newState = GUILayout.Toggle(
                m_ForceRebuild.state,
                m_ForceRebuild.content);
            if (newState != m_ForceRebuild.state)
            {
                EditorPrefs.SetBool(m_ForceRebuild.PrefKey, newState);
                m_ForceRebuild.state = newState;
            }
            newState = GUILayout.Toggle(
                m_CopyToStreaming.state,
                m_CopyToStreaming.content);
            if (newState != m_CopyToStreaming.state)
            {
                EditorPrefs.SetBool(m_CopyToStreaming.PrefKey, newState);
                m_CopyToStreaming.state = newState;
            }

            // advanced options
            EditorGUILayout.Space();
            m_advancedSettings = EditorGUILayout.Foldout(m_advancedSettings, "Advanced Settings");
            if (m_advancedSettings)
            {
                var indent = EditorGUI.indentLevel;
                EditorGUI.indentLevel = 1;
                CompressOptions cmp = (CompressOptions)EditorGUILayout.IntPopup(
                    m_CompressionContent,
                    (int)m_compression,
                    m_CompressionOptions,
                    m_CompressionValues);

                if (cmp != m_compression)
                {
                    m_compression = cmp;
                    EditorPrefs.SetInt(kBuildPrefPrefix + "Compression", (int)m_compression);
                }
                foreach (var tog in m_toggleData)
                {
                    newState = EditorGUILayout.ToggleLeft(
                        tog.content,
                        tog.state);
                    if (newState != tog.state)
                    {
                        EditorPrefs.SetBool(tog.PrefKey, newState);
                        tog.state = newState;
                    }
                }
                EditorGUILayout.Space();
                EditorGUI.indentLevel = indent;
            }

            // build.
            EditorGUILayout.Space();
            if (GUILayout.Button("Build"))
            {
                ExecuteBuild();
            }
            GUILayout.EndVertical();
            EditorGUILayout.EndScrollView();
        }
示例#14
0
        public void OnGUI(Rect pos)
        {
            m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition);
            bool newState = false;

            //basic options
            EditorGUILayout.Space();
            GUILayout.BeginVertical();

            // build target
            using (new EditorGUI.DisabledScope(!AssetBundleModel.Model.DataSource.CanSpecifyBuildTarget)) {
                ValidBuildTarget tgt = (ValidBuildTarget)EditorGUILayout.EnumPopup(m_TargetContent, m_BuildTarget);
                if (tgt != m_BuildTarget)
                {
                    m_BuildTarget = tgt;
                    if (m_UseDefaultPath)
                    {
                        m_OutputPath  = "AssetBundles/";
                        m_OutputPath += m_BuildTarget.ToString();
                        EditorUserBuildSettings.SetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath", m_OutputPath);
                    }
                }
            }


            ////output path
            using (new EditorGUI.DisabledScope(!AssetBundleModel.Model.DataSource.CanSpecifyBuildOutputDirectory)) {
                EditorGUILayout.Space();
                GUILayout.BeginHorizontal();
                var newPath = EditorGUILayout.TextField("Output Path", m_OutputPath);
                if (newPath != m_OutputPath)
                {
                    m_UseDefaultPath = false;
                    m_OutputPath     = newPath;
                    EditorUserBuildSettings.SetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath", m_OutputPath);
                }
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Browse", GUILayout.MaxWidth(75f)))
                {
                    BrowseForFolder();
                }
                if (GUILayout.Button("Reset", GUILayout.MaxWidth(75f)))
                {
                    ResetPathToDefault();
                }
                if (string.IsNullOrEmpty(m_OutputPath))
                {
                    m_OutputPath = EditorUserBuildSettings.GetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath");
                }
                GUILayout.EndHorizontal();
                EditorGUILayout.Space();

                newState = GUILayout.Toggle(
                    m_ForceRebuild.state,
                    m_ForceRebuild.content);
                if (newState != m_ForceRebuild.state)
                {
                    if (newState)
                    {
                        m_OnToggles.Add(m_ForceRebuild.content.text);
                    }
                    else
                    {
                        m_OnToggles.Remove(m_ForceRebuild.content.text);
                    }
                    m_ForceRebuild.state = newState;
                }
                newState = GUILayout.Toggle(
                    m_CopyToStreaming.state,
                    m_CopyToStreaming.content);
                if (newState != m_CopyToStreaming.state)
                {
                    if (newState)
                    {
                        m_OnToggles.Add(m_CopyToStreaming.content.text);
                    }
                    else
                    {
                        m_OnToggles.Remove(m_CopyToStreaming.content.text);
                    }
                    m_CopyToStreaming.state = newState;
                }
            }

            // advanced options
            using (new EditorGUI.DisabledScope(!AssetBundleModel.Model.DataSource.CanSpecifyBuildOptions)) {
                EditorGUILayout.Space();
                m_AdvancedSettings = EditorGUILayout.Foldout(m_AdvancedSettings, "Advanced Settings");
                if (m_AdvancedSettings)
                {
                    var indent = EditorGUI.indentLevel;
                    EditorGUI.indentLevel = 1;
                    CompressOptions cmp = (CompressOptions)EditorGUILayout.IntPopup(
                        m_CompressionContent,
                        (int)m_Compression,
                        m_CompressionOptions,
                        m_CompressionValues);

                    if (cmp != m_Compression)
                    {
                        m_Compression = cmp;
                    }
                    foreach (var tog in m_ToggleData)
                    {
                        newState = EditorGUILayout.ToggleLeft(
                            tog.content,
                            tog.state);
                        if (newState != tog.state)
                        {
                            if (newState)
                            {
                                m_OnToggles.Add(tog.content.text);
                            }
                            else
                            {
                                m_OnToggles.Remove(tog.content.text);
                            }
                            tog.state = newState;
                        }
                    }
                    EditorGUILayout.Space();
                    EditorGUI.indentLevel = indent;
                }
            }

            // build.
            EditorGUILayout.Space();
            if (GUILayout.Button("Build"))
            {
                EditorApplication.delayCall += ExecuteBuild;
            }
            GUILayout.EndVertical();
            EditorGUILayout.EndScrollView();
        }
示例#15
0
        public void OnGUI(Rect pos)
        {
            m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition);
            bool newState = false;

            //basic options
            EditorGUILayout.Space();
            GUILayout.BeginVertical();
            ValidBuildTarget tgt = (ValidBuildTarget)EditorGUILayout.EnumPopup(m_TargetContent, m_BuildTarget);

            if (tgt != m_BuildTarget)
            {
                m_BuildTarget = tgt;
                EditorPrefs.SetInt(k_BuildPrefPrefix + "BuildTarget", (int)m_BuildTarget);
                if (m_UseDefaultPath)
                {
                    m_OutputPath  = "AssetBundles/";
                    m_OutputPath += m_BuildTarget.ToString();
                    EditorUserBuildSettings.SetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath", m_OutputPath);
                }
            }


            ////output path
            EditorGUILayout.Space();
            GUILayout.BeginHorizontal();
            var newPath = EditorGUILayout.TextField("Output Path", m_OutputPath);

            if (newPath != m_OutputPath)
            {
                m_UseDefaultPath = false;
                m_OutputPath     = newPath;
                EditorUserBuildSettings.SetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath", m_OutputPath);
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Browse", GUILayout.MaxWidth(75f)))
            {
                BrowseForFolder();
            }
            if (GUILayout.Button("Reset", GUILayout.MaxWidth(75f)))
            {
                ResetPathToDefault();
            }
            if (string.IsNullOrEmpty(m_OutputPath))
            {
                m_OutputPath = EditorUserBuildSettings.GetPlatformSettings(EditorUserBuildSettings.activeBuildTarget.ToString(), "AssetBundleOutputPath");
            }
            GUILayout.EndHorizontal();
            EditorGUILayout.Space();

            newState = GUILayout.Toggle(
                m_ForceRebuild.state,
                m_ForceRebuild.content);
            if (newState != m_ForceRebuild.state)
            {
                EditorPrefs.SetBool(m_ForceRebuild.prefsKey, newState);
                m_ForceRebuild.state = newState;
            }
            newState = GUILayout.Toggle(
                m_CopyToStreaming.state,
                m_CopyToStreaming.content);
            if (newState != m_CopyToStreaming.state)
            {
                EditorPrefs.SetBool(m_CopyToStreaming.prefsKey, newState);
                m_CopyToStreaming.state = newState;
            }


            // advanced options
            EditorGUILayout.Space();
            m_AdvancedSettings = EditorGUILayout.Foldout(m_AdvancedSettings, "Advanced Settings");
            if (m_AdvancedSettings)
            {
                var indent = EditorGUI.indentLevel;
                EditorGUI.indentLevel = 1;
                CompressOptions cmp = (CompressOptions)EditorGUILayout.IntPopup(
                    m_CompressionContent,
                    (int)m_Compression,
                    m_CompressionOptions,
                    m_CompressionValues);

                if (cmp != m_Compression)
                {
                    m_Compression = cmp;
                    EditorPrefs.SetInt(k_BuildPrefPrefix + "Compression", (int)m_Compression);
                }
                foreach (var tog in m_ToggleData)
                {
                    newState = EditorGUILayout.ToggleLeft(
                        tog.content,
                        tog.state);
                    if (newState != tog.state)
                    {
                        EditorPrefs.SetBool(tog.prefsKey, newState);
                        tog.state = newState;
                    }
                }
                EditorGUILayout.Space();
                EditorGUI.indentLevel = indent;
            }

            // build.
            EditorGUILayout.Space();
            if (GUILayout.Button("Build"))
            {
                ExecuteBuild();
            }
            GUILayout.EndVertical();
            EditorGUILayout.EndScrollView();
        }
示例#16
0
 private bool IsXCodeProject()
 {
     return(EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneOSX &&
            EditorUserBuildSettings.GetPlatformSettings("OSXUniversal", "CreateXcodeProject").Equals("true"));
 }
示例#17
0
        public static void BuildGame(string buildDir, BuildTarget buildTarget, bool headLessBuild, bool devBuild = false, bool autoConnectProfiler = false,
                                     bool deepProfiling = false, bool scriptDebugging = false, bool copyPdbFiles = false, bool scriptsOnly = false)
        {
            Debug.Log($"Starting game build at {DateTime.Now:G}...");
            Stopwatch stopwatch = Stopwatch.StartNew();

            if (buildTarget == BuildTarget.StandaloneWindows || buildTarget == BuildTarget.StandaloneWindows64)
            {
                buildDir += ".exe";
            }

            Debug.Log($"Building to '{buildDir}'...");

            //Set target group
            #region Target Group

            BuildTargetGroup targetGroup;
            switch (buildTarget)
            {
            case BuildTarget.StandaloneLinux64:
            case BuildTarget.StandaloneWindows64:
            case BuildTarget.StandaloneOSX:
            case BuildTarget.StandaloneWindows:
                targetGroup = BuildTargetGroup.Standalone;
                break;

            case BuildTarget.iOS:
                targetGroup = BuildTargetGroup.iOS;
                break;

            case BuildTarget.Android:
                targetGroup = BuildTargetGroup.Android;
                break;

            case BuildTarget.WebGL:
                targetGroup = BuildTargetGroup.WebGL;
                break;

            case BuildTarget.WSAPlayer:
                targetGroup = BuildTargetGroup.WSA;
                break;

            case BuildTarget.PS4:
                targetGroup = BuildTargetGroup.PS4;
                break;

            case BuildTarget.XboxOne:
                targetGroup = BuildTargetGroup.XboxOne;
                break;

            case BuildTarget.tvOS:
                targetGroup = BuildTargetGroup.tvOS;
                break;

            case BuildTarget.Switch:
                targetGroup = BuildTargetGroup.Switch;
                break;

            case BuildTarget.Lumin:
                targetGroup = BuildTargetGroup.Lumin;
                break;

            case BuildTarget.Stadia:
                targetGroup = BuildTargetGroup.Stadia;
                break;

            case BuildTarget.CloudRendering:
                targetGroup = BuildTargetGroup.CloudRendering;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            #endregion

            //Setup build options
            BuildOptions options = BuildOptions.None;

            //Server/Headless mode
            if (headLessBuild)
            {
                options |= BuildOptions.EnableHeadlessMode;
            }

            //Copy PDB files
            string existingCopyPdbFilesOptions =
                EditorUserBuildSettings.GetPlatformSettings("Standalone", CopyPdbFilesEditorString);

            if (copyPdbFiles)
            {
                EditorUserBuildSettings.SetPlatformSettings("Standalone", CopyPdbFilesEditorString,
                                                            SettingsManager.CopyPdbFiles ? "true" : "false");
            }

            //Dev build
            if (devBuild)
            {
                options |= BuildOptions.Development;

                if (autoConnectProfiler)
                {
                    options |= BuildOptions.ConnectWithProfiler;
                }

                if (deepProfiling)
                {
                    options |= BuildOptions.EnableDeepProfilingSupport;
                }

                if (scriptDebugging)
                {
                    options |= BuildOptions.AllowDebugging;
                }
            }

            //Scripts only
            if (scriptsOnly)
            {
                options |= BuildOptions.BuildScriptsOnly;
            }

            //Run build action pre-build
            Debug.Log("Running build actions pre build...");
            try
            {
                BuildActions.RunPreActions(Path.GetDirectoryName(buildDir), buildTarget, ref options);
            }
            catch (Exception ex)
            {
                Debug.LogError($"An error occurred while running a build action's pre build! {ex}");
            }

            Debug.Log("Build actions pre build done!");

            Debug.Log("Building player...");

            //Build the player
            BuildReport report = BuildPipeline.BuildPlayer(new BuildPlayerOptions
            {
                locationPathName = buildDir,
                target           = buildTarget,
                options          = options,
                targetGroup      = targetGroup,
                scenes           = EditorBuildSettings.scenes.Select(scene => scene.path).ToArray()
            });

            //Set CopyPDBFiles to it's original setting
            EditorUserBuildSettings.SetPlatformSettings("Standalone", CopyPdbFilesEditorString,
                                                        existingCopyPdbFilesOptions);

            //If the build failed
            if (report.summary.result != BuildResult.Succeeded)
            {
                stopwatch.Stop();
                Debug.LogError($"Build failed for some reason! Completed in {stopwatch.ElapsedMilliseconds / 1000}s.");
                return;
            }

            //Run Build Action post build
            try
            {
                BuildActions.RunPostActions(Path.GetDirectoryName(buildDir), report);
            }
            catch (Exception ex)
            {
                Debug.LogError($"An error occurred while running a build action's post build! {ex}");
            }

            //End
            stopwatch.Stop();
            Debug.Log($"Build done in {stopwatch.ElapsedMilliseconds / 1000}s!");
        }