🌑

脑洞杂货铺

UnityWebBrowserSolution

Unity 中使用 Web 游览器 解决方案

简介

  • 收集在Unity中嵌如Web的解决方案。
  • UnityWebCore: 只支持Windows平台,调用浏览器内核,将网页渲染到mesh,作为gameObject。
  • WWebView: 只支持Windows
  • ZFBrowser: 适用于Windows、MacOS。(web内容以raw纹理方式显示。web页作为物体存在于场景中。)
  • Unity-Webview: 适用于Android, iOS, Unity Web Player, and Mac (Windows 现在还不支持(包括Editor模式)).,调用移动平台的Webview。(通过调用对应平台的web引擎显示网页。导致网页显示在屏幕最上端,会遮盖住一切unity的物体。可以在mac editor中调试,并且能在unity的game窗口内部正常显示。)
  • UniWebView: 适用于Andriod、ios和Mac os,在移动端效果最好。2.0版本之后支持WP8,不支持windows桌面系统,包括编辑器状态。(原理同Unity-Webview,后续支持和官网api资料比较好。缺点是在mac editor调试时web页是从unity game窗口脱离出来的,运行时的整体性差了些。)
  • ……

先上对比结论

  • 移动端
    • Android、IOS 选择 UniWebView
    • 推荐原因:①软件更新支持好。②官方文档质量好。
    • 不足:在调试时web页单独一个窗口显示,整体性不太好。

UnityWebCore

Unity-Webview

UniWebView

ZFBrowser

Q&A

  • Android net::ERR_CLEARTEXT_NOT_PERMITTED
    • 从Android 9.0(API级别28)开始,默认情况下禁用明文支持。因此http的url均无法在webview中加载
    • 在unity中Plugins/Android/AndroidManifest添加节点 **”android:usesCleartextTraffic=”true”**,启动域名明文,支持http请求。
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.webviewtest">
      <uses-permission android:name="android.permission.INTERNET"/>
          <application
              android:usesCleartextTraffic="true"					//确认网络权限给过以后,加入这句即可
              <activity android:name=".MainActivity">
      ```

— 2021年3月25日