IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UnityRenderStreaming 网页端发送字符串,Unity接收字符串 -> 正文阅读

[游戏开发]UnityRenderStreaming 网页端发送字符串,Unity接收字符串


前言

上一章了解了网页端是如何打包数据发送给Unity的,由于Unity这边收数据的方式比较容易理解 我就不分开讲了
这篇文章直接将如何让网页端发送字符串给Unity

一、网页端修改发送数据包的代码

1.首先打开app.js

找到生成三个按钮的代码,注释掉其中两个,留下一个用作测试发送字符串
在这里插入图片描述

2.修改register-events.js

由于原来的方法Dataview的SetInt16只能传送2个字节的数字(这里代码找不到的朋友可以看我上一篇文章)
我的方法是将字符串先转化为utf8编码,再转化为字节流放入DataView中

先添加一个方法用于字符串的utf8转换

function utf8AbFromStr(str) {
      var strUtf8 = unescape(encodeURIComponent(str));
      var array = new Uint8Array(strUtf8.length);
      for (var i = 0; i < strUtf8.length; i++) {
          array[i] = strUtf8.charCodeAt(i);
      }
      return array;
    }

由于data.setUint8占用了字节流的第1个字节位置,为了不破坏原来的数据格式,所以可以给字符串前加一个空格用来留给它 (这一个字节的用处 下文有讲到!)By老弟自然卷

	elementId=" "+elementId;
    var buf=utf8AbFromStr(elementId);
    et data = new DataView(buf.buffer);
    data.setUint8(0, InputEvent.ButtonClick);
  
    videoPlayer && videoPlayer.sendMsg(data.buffer);

在这里插入图片描述

二、修改Unity端接收数据的代码

1.RemoteInput.cs

找到ProcessInput(byte[] bytes)方法
其中bytes[]就是网页端传来的数据包的字节流

在方法中找到case EventType.ButtonClick:
在这里插入图片描述
从上面的图片中可以得知:原来数据包的第一位字节是用来判断事件类型的!!!By老弟自然卷
在这里插入图片描述
通过提示可以看出来这个方法只能将字节流转为short类型,而我们现在传输的是utf8编码的字节流,很显然是不能用这个方法还原的
因此将这个方法改为

var elementId = System.Text.Encoding.UTF8.GetString(bytes, 1, bytes.Length - 1);

由于原来的方法只能接收Int类型,导致后面的代码也会相应报错,很简单把报错的地方都改成String就好了!!
在这里插入图片描述
在这里插入图片描述
这个脚本里的报错就改完了,但是回到Unity发现RenderStreaming也有报错,接着改!By老弟自然卷

2.RenderStreaming.cs

在这里插入图片描述
在这里插入图片描述
By老弟自然卷

到这里修改得差不多了

Debug输出一下接收到的字符串
在这里插入图片描述
确保启动了web服务 运行项目 打开网页输入ip 单击按钮
见证奇迹的时刻到了!
在这里插入图片描述
在这里插入图片描述
传输字符串的功能完成了,接下去对字符串的处理可以自己修改代码完成自己想要的功能了。

方法不唯一,条条大路通罗马,如果你有其他方法,感谢分享。

如果有在使用URS的朋友可以我一起学习!

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:32:32  更:2021-07-22 14:34:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 13:41:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码