☰
Unity接入WebView三步搞定
2026/10/16 2:12:13 网站建设 项目流程

这篇只讲三件事,每件事只有几行代码:

  1. 在游戏里打开一个网页
  2. 把网页关掉
  3. 网页上点按钮,游戏收到消息

本文以安卓手机为例,因为它最简单。


准备工作(只做一次)

1. 安装插件

Unity 自己不会显示网页,要装一个免费插件unity-webview。

在 Unity 菜单里点:Window → Package Manager → 左上角 "+" → Add package from git URL

粘贴下面这行,点 Add:

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

2. 打开联网权限

Edit → Project Settings → Player → Other Settings,找到Internet Access,改成Require。

3. 记住一件事

在电脑上的 Unity 里运行,看不到网页。必须打包到安卓手机上才能看到。这是正常的,不是你做错了。


第 1 课:打开一个网页

新建脚本MyWeb.cs,复制下面的代码:

usingUnityEngine;publicclassMyWeb:MonoBehaviour{WebViewObjectweb;// 用来装网页窗口voidStart(){web=newGameObject("Web").AddComponent<WebViewObject>();// ① 造一个网页窗口web.Init();// ② 让它准备好web.SetMargins(0,0,0,0);// ③ 铺满整个屏幕web.SetVisibility(true);// ④ 显示出来web.LoadURL("https://www.baidu.com");// ⑤ 打开这个网址}}

怎么用:在场景里随便建一个空物体,把这个脚本拖上去,打包到手机。

效果:游戏一打开,屏幕上就显示百度首页。

就像开电视:拿出电视 → 插电 → 摆好位置 → 打开 → 换到某个台。


第 2 课:把网页关掉

网页打开了,总得能关。关掉只需要一句:

Destroy(web.gameObject);// 把网页窗口扔掉

有个小问题:Unity 的按钮会被网页挡住

网页窗口永远在最上层。如果铺满全屏,你在 Unity 里做的"关闭"按钮就被盖住了,点不到。

解决:让网页往下挪一点,把屏幕顶部空出来放按钮。

把第 1 课的第 ③ 行改成:

web.SetMargins(0,200,0,0);// 顶部空出 200 像素

四个数字的意思是:左、上、右、下各空出多少。

然后在脚本里加一个关闭方法:

publicvoidCloseWeb(){Destroy(web.gameObject);}

在 Unity 里做一个按钮,放在屏幕最上面,点击事件选CloseWeb,就能关掉网页了。


第 3 课:网页点按钮,游戏收到消息

这是最有用的功能。比如网页上有个"领取奖励"按钮,玩家一点,游戏就发金币。

网页这边:只要一句话

在网页的按钮里写:

<buttononclick="Unity.call('领奖')">领取奖励</button>

Unity.call('领奖')的意思是:对游戏喊一声"领奖"。

游戏这边:准备一只"耳朵"

把第 1 课的web.Init();改成:

web.Init(cb:OnWebMessage);// 网页喊话时,交给 OnWebMessage 处理

再加上这个方法:

voidOnWebMessage(stringmsg){if(msg=="领奖"){Debug.Log("玩家领取了 100 金币!");}}

完整代码(可以直接用)

为了方便测试,这里把网页直接写在代码里,不用自己准备网站:

usingUnityEngine;publicclassMyWeb:MonoBehaviour{WebViewObjectweb;voidStart(){web=newGameObject("Web").AddComponent<WebViewObject>();web.Init(cb:OnWebMessage);// 准备好"耳朵"web.SetMargins(0,200,0,0);// 顶部留位置给关闭按钮web.SetVisibility(true);// 一个最简单的网页:两个按钮stringhtml="<h1>签到活动</h1>"+"<button style='font-size:40px' onclick=\"Unity.call('领奖')\">领取奖励</button>"+"<br><br>"+"<button style='font-size:40px' onclick=\"Unity.call('关闭')\">关闭</button>";web.LoadHTML(html,"");// 显示这个网页}// 网页喊话时,这里会收到voidOnWebMessage(stringmsg){if(msg=="领奖"){Debug.Log("玩家领取了 100 金币!");}elseif(msg=="关闭"){CloseWeb();}}publicvoidCloseWeb(){Destroy(web.gameObject);}}

效果:

  • 点网页上的"领取奖励" → 游戏收到"领奖",打印"领取了 100 金币"
  • 点网页上的"关闭" → 网页消失

记住这几个方法就够了

代码意思
Init(cb: 方法名)准备好,并指定谁来听网页说话
SetMargins(左, 上, 右, 下)设置网页的位置和大小
SetVisibility(true)显示出来
LoadURL("网址")打开一个网站
LoadHTML("网页内容", "")直接显示一段网页代码
Destroy(web.gameObject)关掉网页
网页里Unity.call('文字')网页对游戏说话

遇到问题先看这里

问题怎么办
电脑上运行看不到网页正常现象,打包到手机再看
手机上一片白检查 Internet Access 是否设成了 Require;网址要用https://开头
Unity 的按钮点不到被网页挡住了,用SetMargins把网页往下挪

学会这三课,就已经能做游戏里的公告和活动页了。如果想继续学游戏把玩家名字传给网页,或者在苹果手机上使用,可以告诉我,我再接着讲。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询