UnityWebGl2020.3与前端Vue通信

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

unity2020.1和2020.3虽然是小版本改动,但是webgl打包出来的Index.html内容改动很大,甚至在打包设置里分辨率的设置不一样也影响内容,这里用的是2020.3版本,参考的是这位大佬的文章:https://blog.csdn.net/gigiwotou/article/details/119870742UnityWebGl2020.3与前端Vue通信使用这个模式的分辨率打包出来的代码才和网上别人贴出来的一样。
下面贴一下具体流程
在Unity Asset目录下新建一个Plugins文件夹,新建一个Txt文件,命名随意代码如下

mergeInto(LibraryManager.library, {
   
 
  webMessage: function (eventName, arr){
   
 
    window.ReportReady(Pointer_stringify(eventName), Pointer_stringify(arr))
  }
});

这里的webMessage要和Unity里的代码相对应,并且写完后要把文件格式改为jslibwindow.ReportReady定义的是打包出来的index.html 里向Vue发消息的函数
整体流程:Unity调用自身的webMessage方法 = unity和jslib通信,调用jslib里的webMessage方法,然后jslib就会和你打包出来的html通信,调用里面的 window.ReportReady方法,所以和vue通信的具体方法就要在index.html里的 window.ReportReady方法里具体写明。在你的Index.html里添加如下代码:

 window.ReportReady = function(eventName,arr){
   
	          var initD = {
   detail:{
   arr}
	          var evt = new CustomEvent(eventName, initD)
	          window.top.dispatchEvent(evt)
	          console.log(eventName)
	        }

这段代码的作用就是接受unity发过来的消息并广播给Vue,vue接收代码如下:

--src可以填相对路径也可使完整url链接 
<iframe ref = "iframe" src="web/Unity.html" width="1920" height="1080" webkitallowfullscreen="true" mozallowfullscreen="true" allowfullscreen="true" frameborder="0"></iframe>
 
--调用发消息函数向unity发消息
this.$refs.iframe.contentWindow.message('Canvas', 'SetToken', ‘vue to unity’)
 
--监听unity发出的由window.ReportReady广播的事件,(unityEvent 由unity发送函数定义)
 mounted () {
   
    window.addEventListener('event1', this.uinityEvent, false)
  }

这里的‘event1’就是你unity webMessage这个方法里传的事件名
这段代码里还有vue给unity 发消息的例子,正好解析一下,代码如下
UnityWebGl2020.3与前端Vue通信
message方法里传了三个参数分别是:unity 脚本所挂载的场景GameObject名字,unity 脚本里用来接收消息的方法名,具体传的消息。这里有个注意点就是,网上的代码这里基本上都是Canvas,说明别人unity代码就是挂在Canvas上的,我比较喜欢把测试代码挂在MainCamera上,所以照抄代码的时候这里一直报错,这边建议就和别人一样挂在Canvas上吧。再来看看这个message方法具体是怎么定义的,同样在index.html里定义,代码如下:文章来源地址https://www.toymoban.com/news/detail-441198.html

  function message(gameObject, method, param) {
   
	            if (param === null) {
   
	              param = ''
	            }
	            if (this.gameInstance !== null) {
   
	              this.gameInstance.SendMessage(gameObject, method, param)
	              console.

到了这里,关于UnityWebGl2020.3与前端Vue通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vivado2020.1 ERROR: [Place 30-681] Sub-optimal placement for a global clock-capable IO pin and MMCM

    目录 错误log: 报错路径分析: 该类型问题解决方法: 如何加物理约束? 最近跑工程,跑一个小时后place阶段报错,完整的错误截图: 翻译一下报错log: 全局时钟IO管脚和MMCM之间非最优布局。为了解决这错误,可在IO和MMCM之间插入BUFG。 IO锁定在IOB_X1Y132 (在SLR 0区域) MMCM被

    2024年02月05日
    浏览(109)
  • 【Unity开发小技巧】UnityWebGL打包本地浏览器运行查看

    目录 一.前言: 二.WebGL打包 三.配置web.config(重要) 四.部署IIS  五.测试 正常打包WebGL后在浏览器直接运行会报以下这个错: It seems your browser does not support running Unity WebGL content from file:// urls. Please upload it to an http server, or try a different browser. 无法打开本地链接,需把网页发布成

    2024年02月11日
    浏览(65)
  • 【Unity实战100例】UnityWebGL移动端和电脑端调起输入法,中文输入处理

    目录 一.TextMesh Pro中文显示问题 1.PC端和移动端中文显示异常乱码(解决方案) 1.制作Text

    2024年04月23日
    浏览(21)
  • Unity 内嵌前端网页与通信 (zfbrower、3dwebview)

    插件:3dwebview 需要添加的组件和一些canvas的设置,可参考插件提供的示例场景。 加载网页、 前端到Unity,Unity到前端的参数互传使用方法: 前端 关于这个接收的参数的处理,直接字符串处理就行。 如果分辨率过大,导致渲染出错,加一下宏定义就可以了 注意,这地方有个坑,

    2024年02月04日
    浏览(28)
  • 前端Vue入门-day04-用vue实现组件通信

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 组件的三大组成部分 注意点说明 组件的样式冲突 scoped data 是一个函数 组件通信 什么是组件通信 不同的组件关系 和 组件通信方案分类   父子通信流程图:  父 → 子

    2024年02月15日
    浏览(40)
  • 前端实现websocket通信讲解(vue2框架)

    前言 :最近接到的需求是前端需要实现一个全局告警弹窗,如果使用ajax请求http接口只能用定时器定时去请求是否有告警,这样既消耗资源,又不能实时监测到告警信息。所以这个时候就可以采用websocket来实现通信,因为websocket不用请求一次才响应一次,它可以实现服务器主

    2024年02月12日
    浏览(27)
  • vue项目结合unity webgl通信(亲身实践 Unity2022.3版本)

            在参考网上众多资料后,终于将Vue与Unity Webgl双向通信的功能完成。在此过程中遇到了很多问题,故记录下整体流程。 方案实现: 1.unity端实现一个jslib文件预定义函数作为桥接。 2.c#使用DllImport引入和调用预定义的函数。 3.web端使用js定义被调用函数。 1.Unity Web

    2024年02月12日
    浏览(26)
  • vue项目结合unity webgl,并相互通信

    vue与unity交互完成,最开始使用vue-unity-webgl插件,用着感觉有很多问题,然后换成了iframe,简单记录一下 本文主要解决以下问题: 1.vue项目中如何引入使用unity webgl 2.vue如何与unity互信通信 主要步骤: 1.将unity打包后的文件夹引入至项目,我把它放在static目录下 2.在vue文件通过

    2024年02月16日
    浏览(44)
  • sanic 使用websocket与前端vue通信,持续发送信息

    由于sanic使用较少,很难获取到有效信息,而且对websocket也是挺“一窍不通”的,因此写一下总结。在使用过程中,对sanic注册websocket,还是使用socketio不清。前端vue是使用io,还是WebSocket还是VueSocketIO。 API:sanic.add_websocket_route是Sanic框架自带的一个方法,用于添加WebSocket路由

    2024年02月11日
    浏览(55)
  • 探索前端跨组件通信:EventBus在Vue和React中的应用

    本文作者系360奇舞团前端开发工程师 事件总线(Event Bus) 是一种用于组件间通信的模式,通常用于解决组件之间的解耦和简化通信的问题。在前端框架中,如 Vue.js,事件总线是一个常见的概念。基本上,事件总线是一个能够触发和监听事件的机制,使得组件能够在不直接依

    2024年02月02日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包