| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | using System.IO;using UnityEditor;using UnityEditor.Callbacks;using UnityEngine;namespace WebGLSupport{    public class Postprocessor    {        const string MenuPath = "Assets/WebGLSupport/OverwriteFullscreenButton";#if UNITY_2021_1_OR_NEWER        static readonly bool supportedPostprocessor = true;        static readonly string defaultFullscreenFunc = "unityInstance.SetFullscreen(1);";        static readonly string fullscreenNode = "unity-container";#else        static readonly bool supportedPostprocessor = false;        static readonly string defaultFullscreenFunc = "";        static readonly string fullscreenNode = "";#endif        private static bool IsEnable => PlayerPrefs.GetInt(MenuPath, 1) == 1;        [PostProcessBuild(1)]        public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)        {            if (target != BuildTarget.WebGL) return;            if (!supportedPostprocessor) return;            if (!IsEnable) return;            var path = Path.Combine(pathToBuiltProject, "index.html");            if (!File.Exists(path)) return;            var html = File.ReadAllText(path);            // check node is exist            if (html.Contains(fullscreenNode))            {                html = html.Replace(defaultFullscreenFunc, $"document.makeFullscreen('{fullscreenNode}');");                File.WriteAllText(path, html);            }        }        [MenuItem(MenuPath)]        public static void OverwriteDefaultFullscreenButton()        {            var flag = !Menu.GetChecked(MenuPath);            Menu.SetChecked(MenuPath, flag);            PlayerPrefs.SetInt(MenuPath, flag ? 1 : 0);        }        [MenuItem(MenuPath, validate = true)]        private static bool OverwriteDefaultFullscreenButtonValidator()        {            Menu.SetChecked(MenuPath, IsEnable);            return true;        }    }}
 |