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;
- }
- }
- }
|