Exemple #1
0
        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...");
            }
        }
Exemple #2
0
        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);
         }
     }
 }