You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.9 KiB
C#

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