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