public static void Build() { if (UnityEditor.BuildPipeline.isBuildingPlayer) { return; } settings = BuildPipelineIOSSettings.Instance; string path; if (string.IsNullOrEmpty(settings.buildPath)) { path = OpenBuildSavePanel(settings.buildPath); } else { path = settings.buildPath; } var scenes = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes); for (int i = 0; i < scenes.Count; i++) { if (!scenes[i].enabled) { scenes.RemoveAt(i--); } } if (!(scenes.Count > 0)) { return; } string buildPath; if (settings.createNewFolder) { buildPath = Path.Combine(path, settings.GetFolderName()); } else { buildPath = path; } BuildReport report = UnityEditor.BuildPipeline.BuildPlayer(scenes.ToArray(), buildPath, BuildTarget.WebGL, settings.buildOptions); BuildSummary summary = report.summary; if (summary.result == BuildResult.Succeeded) { Debug.Log($"Build succeeded at '{buildPath}' using {summary.totalTime.TotalSeconds.ToString("N2")} seconds with size of {summary.totalSize} bytes."); #if UNITY_EDITOR_OSX Application.OpenURL("file:/" + buildPath); #else Application.OpenURL(buildPath); #endif } if (summary.result == BuildResult.Failed) { Debug.LogError($"Build failed..."); } }
private void OnEnable() { isDirty = false; settings = BuildPipelineIOSSettings.Instance; urlSchemeList = new List <string>(); listMain = new ReorderableList(urlSchemeList, typeof(string), true, true, true, true); listMain.drawHeaderCallback = DrawHeader; listMain.drawElementCallback = DrawElement; listMain.elementHeightCallback = ElementHeight; listMain.onAddCallback = OnAdd; listMain.onRemoveCallback = OnRemove; listMain.onReorderCallback = OnReorder; //local function. void DrawHeader(Rect rect) { EditorGUI.LabelField(rect, CONTENT_LIST_URL_SCHEMES_HEADER); } void DrawElement(Rect rect, int index, bool isActive, bool isFocused) { rect.height = EditorGUIUtility.singleLineHeight; urlSchemeList[index] = EditorGUI.TextField(rect, GUIContent.none, urlSchemeList[index]); } float ElementHeight(int index) { return(EditorGUIUtility.singleLineHeight); } void OnAdd(ReorderableList list) { urlSchemeList.Add(string.Empty); isDirty = true; } void OnRemove(ReorderableList list) { if (list.index < 0) { return; } urlSchemeList.RemoveAt(list.index); isDirty = true; } void OnReorder(ReorderableList list) { isDirty = true; } }
public static void OnPostProcessBuild(BuildTarget target, string targetPath) { settings = BuildPipelineIOSSettings.Instance; if (target == BuildTarget.iOS) { try { string plistPath = targetPath + "/Info.plist"; PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); // Get root PlistElementDict rootDict = plist.root; // background location useage key (new in iOS 8) rootDict.SetString("NSLocationAlwaysUsageDescription", "Uses background location"); // background modes PlistElementArray bgModes = rootDict.CreateArray("UIBackgroundModes"); bgModes.AddString("location"); bgModes.AddString("fetch"); if (settings.setURLSchemes) { if (settings.urlSchemes != null && settings.urlSchemes.Length > 0) { PlistElementArray urlSchemes = rootDict.CreateArray("CFBundleURLSchemes"); for (int i = 0; i < settings.urlSchemes.Length; i++) { urlSchemes.AddString(settings.urlSchemes[i]); } } else { Debug.LogWarning("Cannot set URL Schemes because it's null or empty."); } } // Write to file File.WriteAllText(plistPath, plist.WriteToString()); } catch (Exception e) { Debug.LogException(e); } } }