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

Unity(四十八):Unity与Web双向交互

效果

在这里插入图片描述

游戏对象绑定脚本

在这里插入图片描述

游戏脚本源码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Tent : MonoBehaviour
{public Camera camera;// Start is called before the first frame updatevoid Start(){}// Update is called once per frame[System.Obsolete]void Update(){SendUnityMessage();}/// <summary>/// 发送数据到Web端/// </summary>[System.Obsolete]public void SendUnityMessage() {// 当前游戏对象的位置Vector3 worldPoint = transform.position;// 转换为屏幕位置Vector3 screenPoint = camera.WorldToScreenPoint(worldPoint);// w屏宽, h屏高, x位置, y位置Vector4 position = new Vector4(Screen.width, Screen.height, screenPoint.x, Screen.height - screenPoint.y);// 发送到Web端Application.ExternalCall("updatePosition2Web", transform.gameObject.name, position);}/// <summary>/// 接收来自Web的传参/// </summary>/// <param name="message">传参信息</param>public void ReceiveWebMessage(string message) {transform.position = Vector3.zero;Debug.Log(message);}
}

打包为Web应用

在这里插入图片描述

修改打包后的HTML源码

在这里插入图片描述

* {margin: 0;padding: 0;box-sizing: border-box;
}html,
body {position: relative;width: 100%;height: 100%;overflow: hidden;
}#unity-canvas,
#unity-svg {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 100%;height: 100%;
}
<!DOCTYPE html>
<html lang="en-us"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Unity WebGL Player</title><link rel="shortcut icon" href="TemplateData/favicon.ico"><link rel="stylesheet" href="TemplateData/style.css"><link rel="manifest" href="manifest.webmanifest">
</head><body><canvas id="unity-canvas" width=900 height=600 tabindex="-1"></canvas><svg id="unity-svg"><text id="svg-text"></text></svg></div><script src="./js/d3@7.js"></script><script>var canvas = document.querySelector("#unity-canvas");let unity = null;var buildUrl = "Build";var loaderUrl = buildUrl + "/XXXXXX.loader.js";var config = {dataUrl: buildUrl + "/XXXXXX.data.unityweb",frameworkUrl: buildUrl + "/XXXXXX.framework.js.unityweb",codeUrl: buildUrl + "/XXXXXX.wasm.unityweb",streamingAssetsUrl: "StreamingAssets",companyName: "DefaultCompany",productName: "XXXXXX",productVersion: "0.1",};var script = document.createElement("script");script.src = loaderUrl;script.onload = () => {createUnityInstance(canvas, config, (progress) => {console.log('progress', progress);}).then((unityInstance) => {unity = unityInstance;}).catch((message) => {alert(message);});};document.body.appendChild(script);/*** 获取游戏对象相对于屏幕的位置* @param name      游戏对象名称* @param position  位置信息*/function updatePosition2Web(name, position) {const [w, h, x, y] = position.replace(/[()\s]/g, '').split(',');const svg = d3.select('#unity-svg').attr('viewBox', [0, 0, w, h]);d3.select('#svg-text').text(position).attr('x', x).attr('y', y).attr('fill', 'red').attr('font-size', 30).on('click', e => {console.log(name, unity);unity.SendMessage(name, "ReceiveWebMessage", "发送消息到unity!!!")});}</script>
</body></html>

相关文章:

Unity(四十八):Unity与Web双向交互

效果 游戏对象绑定脚本 游戏脚本源码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Tent : MonoBehaviour {public Camera camera;// Start is called before the first frame updatevoid Start(){}// Update is called once…...

web前端--网页练习

html代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>小米</title><!-- 引…...

信息安全入门——网络安全控制

目录 前言信息安全入门&#xff1a;网络安全控制基础1. 用户识别技术&#xff1a;确认你是谁2. 访问控制技术&#xff1a;定义你能做什么3. 访问控制列表&#xff08;ACL&#xff09;&#xff1a;精细的权限管理4. 漏洞控制&#xff1a;防范未然5. 入侵检测系统&#xff08;IDS…...

跟着鸟儿学飞行?扑翼机器人的感知秘籍

大家好&#xff01;今天来了解一篇扑翼机器人的研究——《Avian-inspired embodied perception in biohybrid flapping-wing robotics》发表于《Nature Communications》。在广阔天空中&#xff0c;鸟类凭借精妙翅膀结构与敏锐感知自由翱翔&#xff0c;这一直吸引着科学家探索其…...

Python画笔案例-093 绘制 彩虹图

1、绘制 彩虹图 通过 python 的turtle 库绘制 彩虹图,如下图: 2、实现代码 绘制 彩虹图,以下为实现代码: """彩虹图.py """ import turtledef draw_semi_circle(radius):"""画半圆函数"""turtle...

【数据结构】贪心算法:决策的艺术

贪心算法&#xff08;Greedy Algorithm&#xff09;是一类在每一步选择中都采取局部最优解的方法&#xff0c;希望最终能够达到全局最优解。通俗地说&#xff0c;贪心算法的思想就是“每一步都尽量做出最好的选择”&#xff0c;以期望整个过程的最终结果也达到最优状态。贪心算…...

Linux LVS详解

LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是一个基于Linux操作系统的高性能、可扩展的负载均衡器。以下是对LVS的详细介绍&#xff1a; 一、简介 LVS项目由章文嵩博士在1998年5月发起&#xff0c;是中国国内最早出现的自由软件项目之一…...

LabVIEW显微镜自动对焦系统

在生物医学研究中&#xff0c;显微镜图像的清晰度对于细胞分析非常重要。传统的手动对焦方法容易受到人为因素的影响&#xff0c;因此开发了一种自动对焦技术&#xff0c;以提高图像采集的准确性和效率。 自动对焦方法概述 该系统结合了图像清晰度评估和一维功能优化&#xff…...

基于IP的真实地址生成器

ip-geoaddress-generator 是一个基于 Web 的在线应用程序&#xff0c;能够根据 IP 地址生成真实的随机地址信息。通过多个 API 获取位置数据和随机用户信息&#xff0c;该工具为用户提供了完整的虚拟身份。它由 Next.js 和 Radix UI 构建&#xff0c;具备自动检测当前 IP 地址和…...

下面程序头的三个import语句可以合并或简化么?

下面程序头的三个import语句可以合并或简化么&#xff1f; from tkinter.simpledialog import askinteger from tkinter import * from tkinter import messagebox ——是的&#xff0c;三个import语句可以合并为一个。 合并后的import语句如下所示&#xff1a; from tkinte…...

深度学习--CNN实现猫狗识别二分类(附带下载链接, 长期有效)

1. 代码实现(包含流程解释) 样本量: 8005 # # 1.导入数据集(加载图片)数据预处理# 进行图像增强, 通过对图像的旋转 ,缩放,剪切变换, 翻转, 平移等一系列操作来生成新样本, 进而增加样本容量, # 同时对图片数值进行归一化[0:1] from tensorflow.keras.preprocessing.image …...

Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具

文章目录 Depcheck 是什麽核心功能&#x1f4da;检测未使用的依赖&#x1f41b;检测缺失的依赖✨支持多种文件类型&#x1f30d;可扩展性 安装与使用1. 安装 Depcheck2. 使用 Depcheck Depcheck 的应用总结项目源码&#xff1a; Depcheck 是什麽 来看一个常见错误场景&#x1…...

前端构建工具vite的优势

1. 极速冷启动 Vite 使用原生 ES 模块 (ESM) 在开发环境下进行工作。相比于传统构建工具需要打包所有的文件&#xff0c;Vite 只在浏览器请求模块时动态加载所需的文件。无打包冷启动&#xff1a;无需预先打包&#xff0c;项目启动非常快&#xff0c;尤其对于大型项目效果更明…...

hive查询语句

1.基本语法 SELECT [ALL | DISTINCT]select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BYcol_list] [HAVING where_condition] [ORDER BYcol_list] [CLUSTER BYcol_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number] …...

【AIGC】2024-ECCV-ControlNet++:通过有效的一致性反馈改进条件控制

2024-ECCV-ControlNet: Improving Conditional Controls with Efficient Consistency Feedback ControlNet&#xff1a;通过有效的一致性反馈改进条件控制摘要1. 引言2. 相关工作2.1 基于扩散的生成模型2.2 可控的文本到图像扩散模型2.3 语言和视觉奖励模型 3. 方法3.1. 初步3.…...

Mysql5.7变为GreatSQL 8.0.32-25过程中,SQL语句报错及解决方案

考虑兼容国产化数据库&#xff0c;现需要将Mysql5.7变为GreatSQL&#xff0c;在执行部分sql时&#xff0c;发现在Mysql5.7无报错&#xff0c;在GreatSQL有报错&#xff0c;在此记录一下遇到的几个错误。 1.ERROR 1231 (NO_AUTO_CREATE_USER) 1.1.报错提示 ERROR 1231 (42000…...

Qt 使用QAxObject将QTableView数据导出到Excel表格

这是我记录Qt学习过程的第6篇心得文章&#xff0c;主要是方便自己编写的应用程序导出Excel数据的&#xff0c;走了不少弯路直接上代码。 实现代码&#xff1a; //人员信息导出 ui->pbtn2->setEnabled(false); // 打开文件对话框&#xff0c;选择 excel文件 QString fil…...

fastGpt

参考本地部署FastGPT使用在线大语言模型 1 rockylinx 1 ollama安装 在rockylinux中安装的&#xff0c;ollama由1.5G&#xff0c;还是比较大&#xff0c;所有采用在windows下下载&#xff0c;然后安装的方式&#xff0c;linux安装 tar -C /usr -xzf ollama-linux-amd64.tgz #…...

如何全方位应对服务可用性的挑战

在数字化转型的浪潮中&#xff0c;运维团队正站在企业IT架构的核心位置&#xff0c;面对着前所未有的挑战。服务响应时间和失败率&#xff0c;作为衡量服务质量的重要指标&#xff0c;一直备受关注。然而&#xff0c;在追求这两项指标优化的同时&#xff0c;运维团队还需关注其…...

二进制方式部署k8s集群

目标任务: 1、Kubernetes集群部署架构规划 2、部署Etcd数据库集群 3、在Node节点安装Docker 4、部署Flannel网络插件 5、在Master节点部署组件(api-server,schduler,controller-manager) 6、在Node节点部署组件(kubelet,kube-proxy) 7、查看集群状态 8、运行⼀个测…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...