虽说是详解,但是我也是在使用阶段,把我了解的分享一下,可能并不全面,但是有效!!!
下面都是干货 有js基础的童鞋不要笑我,毕竟本人JS方面不是强项
前言
据我了解,自带的网页是通过JS动态加载的,index.html中并没有东西
重点:两个脚本app.js以及register-events.js
一、app.js 网页元素动态加载
位于webapp\public\scripts
如果是有js基础的朋友 应该很容易看懂
首先:从上往下看,有一个方法比较明显:这里就可以看出网页先加载出一个播放按钮,点击播放按钮的图片会触发onClickButton方法
接着往下看 就找到了按钮生成的代码
注意的是sendClickEvent(videoPlayer,1);这句话
123分别对应的是Unity里renderStreaming中添加的三个事件
可以猜测出sendClickEvent(videoPlayer,1)中的1就是传入Unity中的Data
那么接着找sendClickEvent()这个函数的位置在哪
from “./register-events.js”;
二、register-events.js 数据打包发送
直接搜索sendClickEvent 在最后一段代码
export function sendClickEvent(videoPlayer, elementId) {
let data = new DataView(new ArrayBuffer(3));
data.setUint8(0, InputEvent.ButtonClick);
data.setInt16(1, elementId, true);
videoPlayer && videoPlayer.sendMsg(data.buffer);
}
打包方式很简单,DataView()内嵌ArrayBuffer字节流
首先我其实也不知道DataView是啥 百度一下
噢 原来是为了解决不同平台字节序的一个东西,那就先不管。
Arraybuffer(3)//说明这是一个数组
data.setUint8(0, InputEvent.ButtonClick);//数组第0位是1个字节
ButtonClick在上面出现过,类似于C#的枚举类型,为4
data.setInt16(1, elementId, true);//数组第1位为2个字节,elementId为按钮传来的数字
总结
按钮发送的数据包有以下内容
[单击按钮事件的代码(4),触发的事件代码(1、2、3)]
到这里,数据打包就结束了
如果你只需要按钮能传输数字 了解上面这些就可以自定义的修改了
,但如果你想传输字符串,可以看我下一章!!
如果还有其他问题可以在评论区留言