当前位置: 首页 > news >正文

Unity插件-unity-webview跨平台WebView浏览器组件

目录

一、使用介绍

二、插件介绍​

三、快速入门​

​1. 获取项目​

​2. 导入到 Unity​

​方式一:通过 Sample 项目​

​方式二:通过 Package Manager(Unity 2019.4+)​​

3、构建打包运行

​四、核心用法​

​1. 初始化 WebView​

​2. 关键配置参数​

​五、平台特定配置​

​1. Android​

​2. iOS​

​六、高级功能​

​1. 与 JavaScript 交互​

​2. 文件上传支持(Android)​​

​七、常见问题排查​

​1. 白屏问题​

​2. 性能问题​

​八、构建与发布​

​1. Android​

​2. iOS​

​九、资源与文档​


一、使用介绍

项目地址:gree/unity-webview

适用版本:Unity 5.x 或更早版本


二、插件介绍​

unity-webview 是一个 Unity 插件,允许在 Unity 渲染视图上叠加原生 WebView 组件,支持:

  • ​平台​:Android、iOS、Unity Web Player、Mac(Windows 暂不支持)
  • ​特性​:加载网页、透明背景、文件上传、与 Unity 通信等

三、快速入门

1. 获取项目

git clone https://github.com/gree/unity-webview.git

2. 导入到 Unity

方式一:通过 Sample 项目

  1. 打开仓库中的 sample/Assets/Sample.unity
  2. 导入插件包:
    • 双击 dist/unity-webview.unitypackage 自动导入
    • 或通过 Unity 编辑器菜单:Assets > Import Package > Custom Package

方式二:通过 Package Manager(Unity 2019.4+)​

在 Packages/manifest.json 中添加依赖:

{"dependencies": {"net.gree.unity-webview": "https://github.com/gree/unity-webview.git?path=/dist/package"}
}

无 Fragment 版本(推荐 iOS):

"net.gree.unity-webview": "https://github.com/gree/unity-webview.git?path=/dist/package-nofragment"

3、构建打包运行

运行实例场景,示例如下:


​四、核心用法

1. 初始化 WebView

在脚本中创建 WebViewObject 并配置参数:

using UnityEngine;
using UnityEngine.SceneManagement;public class WebViewManager : MonoBehaviour
{private WebViewObject webViewObject;void Start(){// 初始化 WebViewwebViewObject = new GameObject("WebViewObject").AddComponent<WebViewObject>();// 基础配置webViewObject.Init(cb: (msg) => Debug.Log($"WebView Message: {msg}"),  // JS 到 Unity 的回调err: (msg) => Debug.LogError($"WebView Error: {msg}"),started: () => Debug.Log("WebView Initialized"),timeout: 15  // 超时时间(秒));// 加载 URLwebViewObject.LoadURL("https://example.com");// 设置透明度(需在 Init 后调用)webViewObject.SetTransparent(true);}void OnDestroy(){// 销毁 WebViewDestroy(webViewObject.gameObject);}
}

2. 关键配置参数

参数类型默认值说明
enableWKWebViewboolfalseiOS 使用 WKWebView(推荐 iOS 9+)
separatedboolfalse是否在新窗口打开(仅限桌面平台)
marginsRectOffset(0,0,0,0)边距调整
transparentboolfalse透明背景

​五、平台特定配置

1. Android

  • 权限要求​:
    <!-- AndroidManifest.xml -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • HTTPS 与 HTTP​:
    • 若使用 HTTP,需在 Player Settings 中启用 ​Cleartext Traffic​:
      • Edit > Project Settings > Player > Other Settings > Configuration > Allow HTTP Content Loading
    • 或定义宏 UNITYWEBVIEW_ANDROID_USES_CLEARTEXT_TRAFFIC

2. iOS

  • ATS 兼容性​:
    • 确保 Info.plist 允许非安全连接(若必须使用 HTTP):
      <key>NSAppTransportSecurity</key>
      <dict><key>NSAllowsArbitraryLoads</key><true/>
      </dict>
  • WKWebView 替换 UIWebView​:
    • 使用 WebView.mm 文件替换 WebViewWithUIWebView.mm,避免 App Store 审核问题。

​六、高级功能

1. 与 JavaScript 交互

  • 从 Unity 调用 JS​:
    webViewObject.EvaluateJS("alert('Hello from Unity!');");
  • 从 JS 调用 Unity​:
    // 在网页中
    UnityObject.sendMessage("GameObjectName", "MethodName", "参数");

2. 文件上传支持(Android)​

  • 需在 AndroidManifest.xml 中添加权限:
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
  • 运行时请求权限(Android 6.0+):
    if (Permission.HasUserAuthorizedPermission(Permission.Camera))
    {// 已授权
    }
    else
    {Permission.RequestUserPermission(Permission.Camera);
    }

​七、常见问题排查

1. 白屏问题

  • 原因​:未正确配置 HTTPS、自签名证书或权限。
  • 解决​:
    • 确保加载 HTTPS 页面,或启用 Cleartext Traffic。
    • 检查 AndroidManifest.xml 是否包含必要权限。

2. 性能问题

  • 优化建议​:
    • 减少 WebView 内容复杂度。
    • 使用 webViewObject.SetMargins(0,0,0,0) 消除黑边。
    • 对于频繁交互,使用 SetMargins 调整布局减少重绘。

​八、构建与发布

1. Android

  • 生成 .aar 文件:
    cd Plugins/Android
    ./install.sh --development
  • 将生成的 WebViewPlugin-*.aar 复制到 Unity 项目的 Assets/Plugins/Android 目录。

2. iOS

  • 确保 Xcode 项目设置:
    • Enable Bitcode: No
    • Other Linker Flags: -ObjC

​九、资源与文档

  • 官方仓库​:gree/unity-webview 
  • DeepWiki​:gree/unity-webview |深度维基 --- gree/unity-webview | DeepWiki
http://www.dtcms.com/a/461706.html

相关文章:

  • LeetCode-704-二分查找
  • 老题新解|大整数加法
  • 常见python 排序
  • windows安装claude踩到的坑
  • 专业外贸网站建设公司价格深圳谷歌seo推广
  • 为什么需求文档总是不完整,有哪些解法
  • 88-python电网可视化项目-8-2
  • 计算机专业可考证书汇总及建议
  • 爱站网是干嘛的网站建设中 页面
  • 【agent】AI 数字人构建2:MDM与MNN
  • 配电安全“隐形哨兵”上线!RCMX-ONE剩余电流监视器,守护每一度电的安心
  • 视频封面制作网站wordpress怎么考别人的
  • 专做眼镜的网站临城网络营销怎么做
  • Oracle VirtualBox异常关闭后无法启动解决办法
  • 微信小程序开发从零基础到项目发布的全流程实战教程(五)
  • 边缘计算双雄:CDN与PCDN
  • LeetCode 面试经典 150_哈希表_存在重复元素 II(46_219_C++_简单)
  • 网站2个页面做首页广元 网站建设
  • HTML应用指南:利用POST请求获取全国中信银行网点位置信息
  • 加油站小程序上线即闲置?3 大核心功能 + 运营落地策略
  • 做淘宝客导购网站宁夏百度公司
  • 使用 Flask 实现本机 PyTorch 模型部署:从服务端搭建到客户端调用
  • sql题目练习——多表查询
  • c 做网站加载多个图片网站开发实战第二章
  • 精通C语言(3. 自定义类型:联合体和枚举)
  • 认知事物的三个层次
  • 做数学题目在哪个网站好设计好的装修公司
  • 09.Linux环境变量
  • 11、规划过程组(4):风险
  • HT8698 立体声 D 类音频功率放大器:性能参数介绍