UnityWebGL移动端兼容性说明

这篇具有很好参考价值的文章主要介绍了UnityWebGL移动端兼容性说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

测试时间2023.8.10

UnityWebGL移动端兼容性说明,Unity3D,WebGL,unity3d,c#,unity,webgl,移动端

官方文档说明

依据Unity官方最新版本文档(2021.3LTS),关于WebGL的兼容性说明为"Unity WebGL不支持移动设备。它可能适用于高端设备,但当前的设备通常不够强大,并且没有足够的内存来支持Unity WebGL内容。为了让最终用户意识到这一点,当最终用户尝试在移动浏览器上加载 Unity WebGL 应用程序时,Unity WebGL 的默认模板会显示一条警告消息。要从应用程序中删除此警告,请添加您自己的 WebGL 模板。有关如何执行此操作的信息,请参阅添加 WebGL 模板。"

按照官方文档关闭在移动浏览器上加载 Unity WebGL 应用程序时的警告后进行实际测试。

测试1

以下测试目前仅使用苹果及安卓系统测试:

项目规模 桌面浏览器运行情况 移动设备浏览器运行情况
空包项目/仅单模型/极小功能项目 全部可运行 全部可运行
已完成的部分成品项目测试(选择包体大约40-80MB,空包+必须字体包体在25M左右) 全部可运行 目前测试,加载速度慢为通病;安卓系统基本都可加载访问;苹果系统加载完成后重复加载导致网页崩溃。其他如鸿蒙等移动端系统未测试。

针对于苹果系统无法正常加载问题,查看Safari Console,并无任何报错及异常提示。
并且测试过程中发现并非是较大的项目会导致网页崩溃,所以项目大小与是否崩溃没有直接关系。

初步定位原因:内存溢出。

测试2

UnityWebGL移动端兼容性说明,Unity3D,WebGL,unity3d,c#,unity,webgl,移动端

使用上图附带代码测试,重新复现之前的问题,触发此循环逻辑后,项目重新加载,进而网页崩溃。

同样逻辑在pc平台无问题。

初步定位原因:内存溢出。

测试3

加载结束,进入场景后,在工厂模型内部游览,仅旋转视角浏览过程中,突发网页崩溃,。

同样在桌面浏览器无问题。

初步定位原因:未知,可能是webgl渲染导致崩溃。

测试4

加载结束,在视野中生成2-5个工厂模型,直接画布卡死/网页崩溃。

加载结束,在视野外生成2-20+个工厂模型,未出现崩溃及卡死现象。

同样在桌面浏览器无问题。

初步定位原因:未知,可能是webgl渲染导致崩溃。

结论:

总体来说,印证了Unity官方文档中所说明的“当前的移动设备通常不够强大,并且没有足够的内存来支持Unity WebGL内容。”。

不仅如此,除了官方提及的内存,渲染能力也与桌面GPU性能相差甚远。

在这样的情况下,可以进行一定程度上简单、轻量的项目开发。

  1. 性能差异:WebGL渲染需要GPU资源,而移动设备的GPU可能不如桌面GPU那么强大或者优化。
  2. 内存溢出:安卓的内存普遍较大,但不同型号的苹果手机内存不同。如,iPhone 12 Pro Max 和 iPhone 13 Pro Max,RAM 已经增加到了 6GB。iPhone 13 Mini 和 iPhone 13 则配备了 4GB 的 RAM。内存泄露一般会在Console进行异常提示,但在测试过程中并未发现有任何相关提示。WebGL 内容在浏览器中运行。浏览器在其内存空间中分配应用程序运行内容所需的内存。 可用内存量因以下因素而异:
    a. 使用的设备
    b. 使用的操作系统
    c. 使用的浏览器,以及是在 32 位还是 64 位处理器上运行
    d. 浏览器的 JavaScript 引擎解析代码所需的内存量
    e. 浏览器为每个选项卡使用单独进程,但是内容需要与所有其他打开的选项卡共享内存空间
  3. 网络限制:Unity WebGL 输出包含了引擎的大部分,在移动网络上,下载WebGL应用的数据可能会很慢,这会影响加载时间和用户体验。
  4. WebGL调试:移动设备环境无法连接到编辑器Profiler进行内存占用诊断,很难在打包后确定具体大内存资源或逻辑。
  5. 兼容性适配:为了在移动设备上获得最佳的Unity WebGL体验,需要进行大量不同移动设备(鸿蒙等其他系统)及不同浏览器(chrome,Safari及微信、手机内置浏览器等)的测试和优化,包括压缩资源、优化渲染和功能剔除等,以确保可以兼容大部分设备。

2、3注释:
UnityWebGL并未从一开始就考虑到了浏览器和设备的兼容性问题。与其他Web3d应用程序较为轻量,更容易适应各种设备和网络条件不同。

UnityWebGL的引擎仍然包含许多为其他平台设计的功能和系统,导致空包+中文字体打包后的大小就在25MB,相对于其他web3d引擎来说在移动端的加载时间很慢。这是因为其他web3d引擎通常只包括所需的部分从而减少了文件大小和加载时间。

并且专业的web3d引擎针对新的 Web 技术和浏览器更新进行的迭代更快。

UnityWebGL与其他web3d引擎由于设计哲学和目标市场的不同,它们在移动浏览器的兼容性上可能会有所不同。

开发方案

  1. 建议提前开始使用UnityWebGL进行开发,将基本功能开发完成测试,确保足够的时间进行兼容性适配。
  2. Unity WebGL转微信小游戏,将产品发布在微信小程序平台,由转换工具与微信小游戏运行环境保证适配兼容,并且转换工具提供高性能模式。但微信小游戏发布需要软著、游戏自身自查报告。(注:转换工具仅可将unityWebGL转换为微信小游戏)
  3. 使用其他web3d引擎开发。

测试时间2023.8.11

详细内存界限测试

以4G/6G内存苹果手机Chrome及Safari浏览器为例,稳定申请总内存400+MB后崩溃,因此移动设备浏览器对于UnityWebGL的内存限制大约是桌面浏览器的1/5。

并且手机浏览器加载47M模型时,同样崩溃,猜测显存超出也会导致网页崩溃;而同样模型在桌面浏览器上无论生成多少个都不会导致网页崩溃,仅帧率降低。

同样仅10M大小的模型,总大小15M的贴图文件,在桌面/手机浏览器分别测试:

  • 基础占用:桌面浏览器占用56.1 MB,手机浏览器占用99.8 MB。
  • 贴图占用:相机渲染必需(相机深度渲染贴图占用30M,渲染缓存Buffer贴图占用60M,阴影贴图32M,屏幕阴影贴图20M),模型贴图占用桌面浏览器占用24.8 MB,手机浏览器占用195.1 MB。

经此测试,贴图/UI等图片资源可能因硬件平台不同,导致资源压缩格式不同或压缩失效。相同的贴图/UI资源,在移动浏览器上会比在桌面浏览器中占用更大的内存/显存。

至此,内存/显存的超出都会导致网页崩溃。文章来源地址https://www.toymoban.com/news/detail-638166.html

提示:
  • 因资源加载进入引擎需要引擎内部识别及一些其他描述字段,所以加载入引擎内存的大小是有可能比原资源文件更大的。
  • 如6KB Icon图片,引擎打包时可压缩到2KB,加载入内存大小66KB,并且渲染需要其他引擎组件,如Sprite、Image等,也会额外占用一些内存大小。
  • 这是因为通常模型或图片等资源为结构紧凑的二进制文件,但在读取到内存中时将会被解压,并且有其特定的内存表示,所以会占用比原文件大小更多的内存。
  • 也正是因为以上原因,项目的大小与需要的内存大小并没有直接关系。

使用UnityWebGL在手机浏览器运行存在问题:

  • 手机浏览器资源压缩失效,将会占用比网页浏览器更多的内存。
  • 总内存占用超过400MB(实际所能使用的大概可以有接近300M)即网页崩溃。
  • 渲染较多场景物体时,网页崩溃。
  • 通常,移动设备使用集成的图形处理单元(GPU),这意味着 GPU 和中央处理单元(CPU)共享相同的物理内存。所以手机浏览器所分配的内存空间会更加吃紧。

到了这里,关于UnityWebGL移动端兼容性说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何开展兼容性测试?兼容性测试有什么作用?

    兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。兼容性测试是软件测试过程中必不可少的一个过程,没有兼容性测试的测试是不完整的测试,下面来分享怎么做兼容测试,希望

    2023年04月19日
    浏览(45)
  • Microsoft兼容性遥测是什么?Microsoft兼容性遥测占用高磁盘

    Microsoft兼容性遥测是什么?有用户在检查电脑时发现有个Microsoft兼容性遥测的进程占用较大的磁盘空间,可以禁用该进程来加快系统运行速度吗?下面就来详细看看。 什么是Microsoft兼容性遥测? 此服务在Windows 7,8,10上是合法的.Microsoft兼容性遥测是Windows进程,它存储有关计

    2024年02月04日
    浏览(66)
  • 手机兼容性测试

    Android App 兼容性测试: 是一个比较重要的 App 评价指标。 说到测试阶段,兼容性测试主要是对 App 在各类机型上的兼容、适配等情况进行测试。搞清楚这一阶段的测试 重点后,因此,Android App 在进行兼容性测试前,一定要做好其前序测试内容,否则兼容性测试效果将会较差。

    2024年02月08日
    浏览(26)
  • HTML兼容性

    兼容性:页面在不同的浏览器中可能会显示不同。开发人员适配不同浏览器的过程就叫兼容性。 1. 在IE6下,子级的宽度会撑开父级设置好的宽度 提示:盒模型的计算一定要精确,否则IE浏览器可能会显示不同 2. IE6中,元素浮动,如果宽度需要内容撑开,需要给里面的块元素

    2024年02月14日
    浏览(32)
  • 什么是兼容性测试?

    兼容性测试大家日常都会去做,但是你真的了解兼容性测试吗? 兼容不是别的,而是共同存在或生活的能力。在正常生活中,油和水是不相容的,但牛奶很容易和水结合。 兼容性测试是一种软件测试,用于检查软件是否能够在不同的硬件、操作系统、应用程序、网络环境或

    2024年02月12日
    浏览(48)
  • 共享库的兼容性

    (1)由于Bug的修正、新功能的增加、性能的提升,共享库需要不断的更新版本; (2)共享库的更新可以被分为两类:兼容性更新和不兼容更新; (3)不兼容更新:共享库改变了原有的接口,使用该共享库原有接口的程序可能不能运行或者运行不正常,需要依赖新版本的库

    2024年02月13日
    浏览(27)
  • html常见兼容性问题

    1. png24位的图片在iE6浏览器上出现背景 解决方案:做成PNG8,也可以引用一段脚本处理. 2. 浏览器默认的margin和padding不同 解决方案:加一个全局的 *{margin:0;padding:0;} 来统一。 3. IE6双边距bug:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。

    2024年02月12日
    浏览(38)
  • 小雉配置--支持向上向下兼容的 配置文件 兼容性 设计

          软件的开发离不开配置,传统的软件设计包括前端、后台和数据库3部分,三者是密切配合的统一整体,在实际项目中往往遇到以下问题: 因项目需求不明而增加、修改、删除参数导致配置结构调整后难以同已有数据兼容; 后台参数修改后,前端需要同步修改,无法

    2023年04月18日
    浏览(33)
  • 浏览器兼容性:条件注释

    条件注释与 HTML 注释 (  !-- -- ) 具有相同的语法,但它们仅适用于 Internet Explorer 浏览器 (IE)。尽管现在网络上不再使用该技术。 注释里面的内容只在IE 5-9上可用,其他浏览器会忽略。从 IE 10 开始,语法被禁用。 还可以添加一些约束来限制 IE 版本,例如: 表示IE版本的特殊字

    2024年02月06日
    浏览(49)
  • uniapp 开发规范(兼容性适配)

    因 uniapp 需同时兼容PC端,移动端,微信小程序端,app端等,建议按以下开发规范开发,可更加有效避开多端不兼容的情况: 此处 class 不要写在 u–form,单独用 view 包裹 u–form 来添加样式 直接在组件上添加样式,会出现某些端不生效的情况,建议统一用样式穿透 + !important实

    2024年01月17日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包