You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity WebGL构建移动端浏览器全屏按钮实现方案咨询

解决Unity WebGL移动端浏览器全屏按钮问题

移动端浏览器的全屏功能受限于浏览器安全策略(必须由用户主动交互触发),且Unity默认逻辑区分平板/手机,但可以通过以下几种方案实现可用的全屏按钮:

方案1:原生JS+Unity交互实现自定义全屏

这是最稳定的方案,不受Unity内置逻辑限制:

  1. Unity端绑定按钮事件
    给UI按钮挂载以下C#脚本,调用浏览器端的JS全屏切换函数:

    using UnityEngine;
    using UnityEngine.UI;
    
    public class FullscreenToggle : MonoBehaviour
    {
        [SerializeField] private Button fullscreenBtn;
    
        void Start()
        {
            fullscreenBtn.onClick.AddListener(TriggerFullscreen);
        }
    
        void TriggerFullscreen()
        {
            Application.ExternalCall("toggleMobileFullscreen");
        }
    }
    
  2. WebGL模板中添加JS逻辑
    在Unity WebGL构建的index.html中插入以下JS代码(放在<script>标签内):

    function toggleMobileFullscreen() {
        const unityContainer = document.getElementById("unity-container");
        if (!document.fullscreenElement) {
            // 进入全屏,兼容不同浏览器前缀
            if (unityContainer.requestFullscreen) {
                unityContainer.requestFullscreen();
            } else if (unityContainer.webkitRequestFullscreen) {
                unityContainer.webkitRequestFullscreen({ navigationUI: "hide" });
            } else if (unityContainer.mozRequestFullScreen) {
                unityContainer.mozRequestFullScreen();
            }
        } else {
            // 退出全屏
            if (document.exitFullscreen) {
                document.exitFullscreen();
            } else if (document.webkitExitFullscreen) {
                document.webkitExitFullscreen();
            } else if (document.mozCancelFullScreen) {
                document.mozCancelFullScreen();
            }
        }
    }
    

    注意:确保Unity容器的ID为unity-container(默认构建模板的ID),自定义模板需对应修改。

方案2:绕过Unity内置设备判断

Unity默认会通过isTablet()函数区分设备,只给平板启用全屏按钮。可以修改构建生成的UnityLoader.js强制返回true:
找到function isTablet() { ... },替换为:

function isTablet() { return true; }

缺点:Unity版本更新后重新构建会覆盖修改,需重复操作。

方案3:iOS Safari特殊兼容处理

iOS Safari对全屏API有额外限制,需确保操作由真实触摸触发,且针对canvas元素请求全屏:
修改JS函数为:

function toggleMobileFullscreen() {
    const unityCanvas = document.getElementById("unity-canvas");
    if (!document.fullscreenElement) {
        unityCanvas.webkitRequestFullscreen({ navigationUI: "hide" });
    } else {
        document.webkitExitFullscreen();
    }
}

关键注意事项

  • 所有全屏操作必须由用户主动触摸点击触发,浏览器禁止自动触发全屏,这是安全策略。
  • 测试需在真实移动端设备上进行,模拟器可能存在兼容性偏差。

内容的提问来源于stack exchange,提问作者Cublaiiii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:31:06