unity 发送消息与web前端交互

unity中的SendMessage详解 SendMessage是Unity中用于在游戏对象之间发送消息的函数。通过SendMessage函数,可以在游戏对象之间调用方法,从而实现脚本之间的通信。SendMessage方法可以用于调用任何公共方法,不仅限于MonoBehaviour脚本中的方法。 阅读详情
AI摘要

本文详细介绍了如何实现Unity WebGL项目与Web前端之间的通信。包括创建.jslib文件、Unity C#脚本设置、打包及修改index.html文件等内容。同时,还提供了Web前端调用Unity方法的具体步骤。

参考文章:UnityWebGl与Web前端Html通信,互通消息_boyZhenGui的博客-优快云博客

1.创建.jslib文件

在unity的Plugins文件夹下,创建.jslib文件(可先创建txt,然后将txt打开,另存为.jslib),名字随意。例如: Test.jslib

 Test.jslib内容如下:(Hello名字在unity中使用,TestSend名字在Web中使用。)

mergeInto(LibraryManager.library, {
    Hello: function (str) {
    TestSend("Hello, world!");
  },
});

2.unity  C# 创建关联脚本

        脚本需要引入命名空间:using System.Runtime.InteropServices;

using System.Runtime.InteropServices;
using UnityEngine;
public class Test : MonoBehaviour 
{ 
    //声明和jslib文件关联的Hello()方法
    [DllImport("__Internal")]
    private static extern void Hello();
    void Start()    {
        //调用测试,在unity脚本任意地方,调用hello方法都可以。
        Hello();
    }
}

3.打包,并修改index.html

选中Webgl平台,打包修改index.html

在html代码的中添加如下代码:

   function TestSend(s) 
   {
       alert(s);  
   }

方法名TestSend与.jslib文件function内方法名相同,参数数量相同。

4.打开更改后的网页(也用火狐浏览器,直接在本地打开)

即可发现进入场景后,执行了Start()中的Hellow方法,从而调用了web中新定义的TestSend()方法。弹出alert对话框。

5.如需传递字符串,jslib代码修改如下:

mergeInto(LibraryManager.library, {
  Hello: function (str) {
    TestSend(Pointer_stringify(str));
  },
});

传递其他数据结构,请查看上方官方手册。

Web前端调用Unity方法

1.在Unity脚本中创建public方法

public void GetFromWeb(string str)
    {
        Debug.Log(str);
    }

并将脚本挂在到场景中。

2.修改打包后的index.html文件

使用gameInstance.SendMessage(“GameObject”,“GetFromWeb”,s);调用unity内方法。

SendMessage中第一个参数为挂在1中脚本的物体名称,第二个参数为方法名称,第三个参数是对应的方法参数。

为方便测试,将调用脚本写在unity向web发送消息时用的脚本里。

  index.html修改如下

function TestSend(s)
   {
       alert(s);
       gameInstance.SendMessage("GameObject","GetFromWeb",s);
   }

写在普通的js方法里,通过html调用也是一样的。

3.测试
一开始和第一部分一样,打开webgl网页,执行了unity的Start()中的Hello方法,从而调用了web中定义的TestSend()方法:1.alert(s); 弹出写着参数s的alert对话框。然后执行 2. gameInstance.SendMessage("GameObject","GetFromWeb",s);调用unity场景中名为GameObject物体上脚本里的GetFromWeb()方法,并将参数s传入。 按F12打开控制台,即可看见输出的参数s。


原文链接:https://blog.youkuaiyun.com/boyzhengui/article/details/114374111

Unity-WebGL与html页面相互调用 Unity-WebGL访问html页面 阅读详情

相关推荐

Unity发布Webgl,UI由Web前端实现,在Editor模式下实现交互,避免每次测试都要编译打包

Unity与Web前端结合的UI开发具有多重优势:跨平台兼容性和性能优化可确保一致体验并减轻Unity负担。实现技术方面,通过JavaScript桥接实现双向交互,Unity可使用WebGL专用API调用前端函数,前端则通过unityInstance调用Unity方法,复杂数据建议采用JSON格式传输。本文章提供了Editor模式下的模拟交互方案:Unity端实现WebSocket服务器,前端在无unityInstance时自动切换至WebSocket连接,实现完整的开发测试闭环。

slendar830的博客 944

Unity WebGL+jslib实现与js通信(例.图片下载)

Unity WebGL+jslib实现与js通信(例.图片下载,实测可用)

Star_MengMeng的博客 3480

Unity跨平台Web交互实战:原生插件选型、双向通信与性能优化

在现代应用开发中,跨平台交互与混合架构是提升产品动态性和开发效率的关键技术。其核心原理在于通过桥接机制,实现原生应用与Web内容之间的数据与事件通信。这项技术的价值在于能够充分利用Web生态的快速迭代和丰富资源,同时保持原生应用的高性能和原生体验,是实现热更新、动态内容加载和复杂UI模块化的有效手段。在游戏开发、电商应用、教育软件和企业工具等场景中,它被广泛用于内嵌活动页、实时数据看板、客服系统和在线课件。本文聚焦于Unity引擎,深入探讨了如何通过原生WebView插件(如Vuplex)构建稳健的通信桥梁

weixin_33985679的博客 362

Unity WebGL使用jslib文件打包失败

Unity WebGL使用jslib文件打包失败

Test_Two的博客 1073

告别Unity WebGL的模糊UI:用Vue3重构前端界面,实现丝滑交互的完整指南

本文详细介绍了如何通过Vue3重构Unity WebGL项目的前端界面,解决原生UGUI模糊和交互体验差的问题。文章从技术选型、架构设计到具体实现步骤,提供了完整的解决方案,帮助开发者实现高清UI与丝滑交互,显著提升WebGL应用的性能和用户体验。

weixin_30299709的博客 321

Vue3与Unity WebGL双向通信架构:告别模糊UI,实现高清界面

在Web应用开发中,前端框架与图形渲染引擎的集成是构建复杂交互应用的关键技术。其核心原理在于通过JavaScript与WebAssembly的互操作,建立高效的数据通信桥梁,从而实现逻辑与渲染的分离。这种架构的技术价值在于能够充分发挥现代前端框架在UI构建、样式管理和开发体验上的优势,同时利用Unity等引擎在3D图形渲染和复杂交互计算上的专长。典型的应用场景包括工业仿真、数字孪生、产品配置器和在线教育平台等需要丰富交互和高保真视觉表现的项目。本文聚焦于Vue3与Unity WebGL的深度整合,详细拆解了

weixin_30607659的博客 341

Unity3D开发之WebGL平台上 unity和js前端通信交互

一.老版方法 unity发布webplayer平台后会输出html和unity3d文件。我们的程序主要被打包在unity3d文件里,而html则是网页的界面显示。 1.Unity发送消息给JS unity想要和js交互,提供了一个函数:Application**.ExternalCall()**;此函数仅限于webplayer平台下。我们编辑发布的html文件,在里面加入我们的js脚本如下: fu...

weixin_43149049的博客 1万+

jslib:通用 Javascript 类的集合

jslib jslib 是一组通用的 Javascript 类。 他们不依赖于任何特定的项目并且做非常基本的事情。 自动画布.js 构建一个自动调整大小的全屏 HTML 画布。 Contemplate.js 超轻量级的 HTML5 模板系统。 支持子模板化。 不是为在生产系统中使用而设计的。 用于实验! 模板可以很容易地重新利用,以便与更传统的服务器端模板系统(如 Rails ERB)一起使用。 查看 [jslib/examples/Contemplate] 以了解如何使用 Contemplate。 库鲁.js 一个允许您操作颜色并将它们输出为 RGB 或 HEX 值的类。 日期转换器 转换日期的函数 DomPlus.js 填补了 Javascript 的原生 DOM 操作方法留下的一些空白。 jQueryPlus.js 自定义 jQuery 方法。 MathExt.js

UnityWebGl与Web前端Html通信,互通消息

官方手册——WebGL:与浏览器脚本交互:https://docs.unity3d.com/cn/current/Manual/webgl-interactingwithbrowserscripting.html Unity发送消息到WebGL 1.创建.jslib文件 需要放到Unity的Plugins文件夹下。名字随意。 例如: Test.jslib mergeInto(LibraryManager.library, { Hello: function () { TestSend("Hel

boyZhenGui的博客 4200

基于Unity新版页面对接方式jslib实现页面录音

由于Unity发布WebGL后无法使用Unity中的Microphone,所以无法进行录音,只能借助于网页进行录音操作,因此基于Unity新版页面对接方式jslib实现页面录音。可将录音数据回传至unity,并播放录音.zip

移植 lwip,在 windows 内核构建一个 TCPIP 协议栈

移植 lwip,在 windows 内核构建一个 TCPIP 协议栈 亲,当你点开看这篇文章,就说明你知道我想要干什么事情,或者说,你知道在 Windows 的内核种绕开它的网络协议,再独立构建一个网络协议栈的意义。如果你要问我有 windows 系统的网络协议栈不用,移植 lwip 有什么意义,那么你可以关闭链接走人了,因为这篇文章不适合你,它不是讲 lwip 移植原理的。 经常关注我的博客的朋...

oRbIt 的专栏 3578

Unity WebGL - Web与Unity交互方法

一般我们用Unity WebGL 进行项目制作时会需要从Web发送数据到Unity,也会反过来从Unity调用Web方法以及发送数据,以下是一些技术点备注

Mr.Striker 的技术博客 4946

LabVIEW与MySQL实时数据存储:传感器采集与数据库同步实践

本文详细介绍了如何将LabVIEW与MySQL结合,实现传感器数据的实时采集与高效存储。通过设计合理的数据库表结构、配置LabVIEW数据库连接工具包,并编写核心的采集与存储VI,构建了稳定可靠的数据链路。文章重点分享了批量插入、连接管理、时间同步等关键优化技巧与避坑指南,帮助工程师应对工业监控、环境监测等场景下的实时数据同步挑战。

weixin_29281915的博客 262

Unity-WebGL发布之C#与JS通信交互

版本:Unity2020.3.28 官方文档 最近项目要发布到WebGL,最近刚开始捣鼓。目前要实现Web端播放rtsp,看了很多文章都是在web端解决unity发布WebGL后如何播放rtsp。本人亲测了UMP2.0.3插件,可以在window下现实rtsp播放,但发布到Web端后会提示跨越错误,希望有大佬可以指点指点。 既然准备在web端解决unity发布WebGL后如何播放rtsp的问题,那么在发布WebGL后C#如何与JS通信交互呢? 直奔主题 1.在 Assets 文件夹中的“Plugi

NslCarry的博客 4418

【CVPR 2025】清华:注意力状态空间模块,Mamba与注意力的超强组合,即插即用!

MambaIRv2提出了一种创新的图像恢复模型,通过引入注意力状态空间模块(ASSM)解决了Mamba模型因果建模限制问题。该模型结合语义引导邻域机制和注意力状态空间方程,实现了非因果建模,有效缓解了长距离衰减问题。实验表明,MambaIRv2在图像超分辨率、JPEG压缩伪影减少和图像去噪等任务中表现优异,参数更少但性能超越现有方法。

qq_43303160的博客 3040

从ADS到SystemVue:当简单链路预算不够用时,我的射频系统级仿真方案升级实录

本文详细介绍了从ADS到SystemVue的射频系统级仿真升级路径,重点分析了基础链路预算在多端口元件和复杂场景下的局限性,并提供了SystemVue在非线性系统验证和跨域协同分析中的优势。通过实际案例展示了如何平滑迁移工具链,提升仿真精度和效率,适用于5G、毫米波雷达等现代射频系统设计。

weixin_34233974的博客 344

Unity WebGL、js发布交互

Unity WebGL、js发布交互

chenwenlong72的博客 1299

Mastercam软件二次开发:使用C#进行Mastercam二次开发

C#(发音为“C Sharp”)是一种现代、面向对象的编程语言,由微软开发,首次发布于2000年。它结合了C和C++的强大功能,同时引入了Java的垃圾回收机制,使得C#在开发效率和运行性能之间找到了一个良好的平衡点。C#的设计目标是提高开发者的生产力,它支持多种编程范式,包括面向对象、泛型、委托和事件等,这使得它成为开发Windows应用程序、Web应用程序、游戏(尤其是使用Unity引擎)和企业级应用的理想选择。

kkchenjj的博客 2216

unity云渲染----unity与前端通信

在我搞好Unity接收与发送消息后,然后开始测试,发现在WebAPP给的模板里VideoPlayer Sample可以接收到消息,Receiver Sample不能接收到消息,于是F12看了后台打印发现,VideoPlayer Sample与Receiver Sample差异,然后根据VideoPlayer Sample去改就ok了,在发送消息时也要判断是否有用户连接,当有用户连接时我们要发送消息直接将调用这个方法就行了。在这个类中可以看到他的一些成员是可以接收和发送消息的。

qq_42838242的博客 1046

【数据集】1980-2020年(5年)土地利用分类数据-中国科学院

简介1980-2020年每五年土地利用数据-中国科学院

WW、forever的博客 3934

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法

Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

码农研究僧的博客 1万+

基于Unity+Vue3通信交互的WebGL项目发布实践

本博客基于Unity+Vue3通信交互的WebGL项目发布实践做了一个测试demo演示unity与vue通过第三方插件**unity-webgl**通信的流程。分三步完成:1、搭建Unity测试项目并发布WebGL部署到Vue项目中。2、验证Vue向Unity发送信息:通过前端UI控制Unity游戏物体的显隐和修改颜色。3、验证Unity向Vue发送信息:Unity监听键盘空格键按下触发前端提示框的显示。

他在试图用代码书写这个世界,字里行间温柔尽显。勿忘初心,努力做有价值的技术文章。 1万+

ABAP Reduced Message Types:用精简 IDoc + Change Pointer,把主数据分发做得又快又省

本文介绍了SAP系统集成中主数据分发的精简优化方法。通过创建"精简消息类型"(Reduced Message Types),可以在不改标准IDoc类型的前提下,只发送接收系统真正需要的数据。文章详细解析了主数据变更链路的完整流程,包括变更文档、变更指针和IDoc生成机制,并重点说明了如何在BD53事务中创建精简消息类型、选择保留字段、激活变更指针等实操步骤。此外,还介绍了通过BD59过滤对象和BD64分发模型实现更精确的数据分发,以及变更指针的激活验证、IDoc生成作业和定期清理等运维要

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 134

flutter-unity-view-widget Web 平台部署教程:Unity WebGL 与 Flutter 完美融合

flutter-unity-view-widget 是一个强大的开源项目,它允许开发者在 Flutter 应用中嵌入 Unity 游戏引擎视图,实现 Unity WebGL 与 Flutter 的完美融合。本教程将详细介绍如何在 Web 平台上部署 flutter-unity-view-widget,帮助新手和普通用户快速掌握部署技巧。 ## 准备工作:环境搭建与项目克隆 在开始部署之前,需要

gitblog_00238的博客 1032

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

在 Unity 应用中集成 Web 界面

Ploy3D  插件为 Unity 开发者提供了一套高性能、跨平台的 Web 界面支持方案,让前端生态的灵活性与 Unity 3D 的引擎实力良好结合。

m0_46204445的博客 616

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Unity使用WebSocket和服务器交互

Unity实现WebSocket通信的简要指南

张不无的博客 1277

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: unity webgl替换系统自带加载页
下一篇: 字符与字符串转换
Monkey_Xuan
博客等级 码龄9年 260粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值