Unity webgl 嵌入Vue实现过程

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

需求分析:

Unity webgl嵌入到前端网页中,前端通过调用Unity webgl内方法实现需要展示的功能,前端点击Unity webgl内的交互点,Unity webgl返回给前端一些需要的数据。

例如:当我们需要在三维场景中展示库区中一些监控设备的部署位置,通过点击三维场景中的监控按钮打开当前监控设备的实时画面,一般情况下打开监控需要传递当前监控的IP或者通道号,这时Unity webgl向前端返回数据就用到了。

实现过程:

1、Unity webgl向Vue发送数据

首先,Unity webgl向前端发送数据需要定义一个.jslib格式文件作为转接,文件名自取(建议不要用中文)文件内容如下:

Unity webgl 嵌入Vue实现过程,unity,webgl,vue.js

mergeInto(LibraryManager.library, {

 UnitySendMessage: function (eventname, data)
{
    window.ReportReady(UTF8ToString(eventname), UTF8ToString(data));
 } //如果多个方法需要使用逗号结尾(在此大括号后加逗号),只有一个方法不需要使用逗号


});

到此,转接文件已经定义好了

接着在Unity脚本中添加 using System.Runtime.InteropServices; 引用(用于COM互操作),

代码如下:

using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class Test: MonoBehaviour
{
    
    [DllImport("__Internal")]
    private static extern void UnitySendMessage(string eventname, string data);//方法名及参数和转接的.jslib文件中的一样

    private Button button;

    
    private void Awake()
    {
        button.onClick.AddListener(SendMessage);
    }

    private void SendMessage()
    {
       UnitySendMessage("getbuttonname",GetButtonName());//事件名自己命名即可,前端在监听时使用
    }

  
   private string GetButtonName()
    {
        string name  = EventSystem.current.currentSelectedGameObject.name;
        return name;
    }


}

打包后打开index.html文件加入此段代码:

  window.ReportReady = function (eventname, data) {
            var initD = { detail: { data } }
            var evt = new CustomEvent(eventname, initD)
            window.top.dispatchEvent(evt)
        }

如图:Unity webgl 嵌入Vue实现过程,unity,webgl,vue.js

最后在Vue mounted中加入即可

window.addEventListener('getbuttonname', this.uinityEvent, false)//getbuttonname对应Unity内定义的事件名

2、Vue向Unity发送数据

首先,Vue调用Unity的方法就比较简单了,在Unity内定义带参数的方法如:

using UnityEngine;

public class Test: MonoBehaviour
{
    
   private void GetVueData(string value)
    {
        Debug.Log(value);
    }

}

接着打开打包后的index.html文件,在里面加入供前端调用的方法:

  function GetVueMessage(obj) {
            UnityInstanceV.SendMessage('MainSenceScript', 'GetVueData', JSON.stringify(obj))
//对应的参数分别为:"Unity场景内挂载脚本的物体名字","方法名",最后一个参数复制粘贴即可
        }

Unity webgl 嵌入Vue实现过程,unity,webgl,vue.js

最后只需Vue调用此方法并传递参数就可以了,如果这篇文章帮助到你,就点个赞吧!文章来源地址https://www.toymoban.com/news/detail-751634.html

到了这里,关于Unity webgl 嵌入Vue实现过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 将WebGL打包的unity项目部署至Vue中

    创建一个空项目(或者直接使用现成的项目都可以)这里以该空项目为例子 注意: 如果你的unity项目中有文字,不需要使用unity默认的字体,需要更改它的字体,否则在最后生成的页面中会显示不出来文字 好在你的windows在C盘自带了字体,我这里使用的微软雅黑来进行了替换

    2024年02月02日
    浏览(27)
  • 基于Unity+Vue3通信交互的WebGL项目发布实践

    问题背景 我们最近需要把unity开发的pc项目迁移到web端,因为unity支持发布webgl。所以按照以往的开发流程,都是项目开发完成就发布webgl部署到服务器。 突然有一天,测试人员提出说为什么我们做的网页跟别人的不太一样呢?具体看下面两张图: 1、unity使用ugui做的界面发布

    2024年04月17日
    浏览(39)
  • Unity之webgl端通过vue3接入腾讯云联络中心SDK

    腾讯云联络中心SDK:云联络中心 Web-SDK 开发指南-文档中心-腾讯云 (tencent.com) ​  1.1 对其进行解压 ​  1.2根据文档操作 查看README.md,根据说明设置server下的dev.js里的相关参数。 然后打开电脑终端,cd到项目的路径: ​ 安装依赖   ​ 运行 ​  1.3 运行demo 复制http://127.0.0.1:5173

    2024年02月14日
    浏览(26)
  • Unity打包WebGL的全过程及在打包和使用过程中会遇到的问题

    目录 概要 Unity打包WebGL PlayerSettings设置 Resolution and Presentation Other Settings  Publishing Settings 本地服务器测试环境配置 问题盘点         盘点Unity在Build WebGL环境包时需要的配置以及遇到的难题 Resolution and Presentation Resolution and Presentation 界面主要设置打包后的WebGL界面的分辨率显

    2024年02月16日
    浏览(27)
  • unity webGL与js 交互(获取地址栏URL)

    1.unity传值给js unity中: js中: 2.js传值给unity 参数一 Cookie:场景中物体的名称 (最上层父物体名字,否则无法成功传值) 参数二 OnCookie_Callback:方法名称 参数三 result:值 unity中: 完整: unity场景中物体的名称  untiy代码: js代码:

    2024年02月04日
    浏览(44)
  • Unity打包WebGL的全过程及在打包和使用过程中会遇到的问题(本地测试)

    目录 概要 Unity打包WebGL PlayerSettings设置 Resolution and Presentation Other Settings  Publishing Settings 本地服务器测试环境配置 问题盘点         盘点Unity在Build WebGL环境包时需要的配置以及遇到的难题 Resolution and Presentation Resolution and Presentation 界面主要设置打包后的WebGL界面的分辨率显

    2024年02月05日
    浏览(51)
  • 3d标签云实现过程(tagcloud.js)同步原生和 vue

    写在前面 本来是没有准备写这个知识点,但是下载这个 js 的时候发现很多都是要钱或者是积分的,我就不明白了一个开源了这么久的 js 怎么还有人拿来挣钱的,同时还有一些只有原生 html 的例子,但是现在都是 框架主导的一些项目,显然是不行的,这篇文章就简单的写一下

    2024年02月04日
    浏览(26)
  • Unity+chatgpt+webgl实现声音录制+语音识别

            AI二次元女友这个项目持续更新,在window端的语音识别和语音合成的功能,在上一篇博文里已经详细说明了微软Azure语音服务的代码实现。也是为了实现一次代码,多端复用这样的诉求,所以全部的代码实现都改成了web api的方式。然而在实测发布到webgl的时候,就发现

    2024年02月16日
    浏览(36)
  • Unity发布WebGL运行Js代码报错:‘Pointer_stringify‘ is obsoleted and will be removed in a future Unity version.

    👉一、报错来源 Unity版本:Unity 2021.3.11f1c2。 发布平台:WebGL。 WebGL项目中有用到一个下载的功能,将图片下载到本地,是Unity通过调用Js代码来完成的,在测试时发现浏览器控制台报了这个错误信息。 👉二、报错信息 The JavaScript function ‘Pointer_stringify(ptrToSomeCString)’ is obs

    2024年02月08日
    浏览(35)
  • 在vue项目中使用unity资源,实现页面和unity中事件的交互。

    1.将unity给的包放在public路径下。 2.在iframe中引入。 3.在vue项目中监听unity中的事件。关闭页面的时候需要销毁。 4.vue页面向unity发送参数信息。 5.在unity中的index.html文件中接收页面传来的参数。 6.调用unity内部的事件。

    2024年04月13日
    浏览(21)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包