unity webgl与 js 交互
前言
最近发布到 webgl 平台还是有很多坑 需要注意 。
一、发布webgl 方式
第一种方式:
1,点击 unity buildsetting 页面 build and run
第二种方式:
搭建一个springboot 服务器 然后把 build出来的 三个文件 放在
访问:
http://localhost:8080/Web/index.html
二、unity 与js 交互 架构
定义js 方法
var myPlugin =
{
**//加入自己的方法
// 这里写的方法 不要有lamda表达式 试过 编译不了
//
**
UpLoad: function()
{}
}
mergeInto(LibraryManager.library, myPlugin );
c# : 调用
[DllImport("__Internal")]
private static extern void UpLoad();
JS 调用js
在myPlugin 中的方法是不能相互调用的 我测试调用会找不到,如果想写一个全局能调用的方法 或者全局变量 在 index.html 中写
或者写在另外一个 js 文件中 在index.html 中
<script src="Build/UnityLoader.js"></script>
像这样包含进来。
js调用c#
SendMessage('MyGameObject', 'MyFunction', 5);
//MyFunction 一定要定义成 public
//
string 如果是js返回值 是一个string
StringReturnValueFunction: function () {
var returnStr = "bla";
var bufferSize = lengthBytesUTF8(returnStr) + 1;
var buffer = _malloc(bufferSize);
stringToUTF8(returnStr, buffer, bufferSize);
return buffer;
}
如果是参数 直接传值可以:
SendMessage('MyGameObject', 'MyFunction', "string");
//MyFunction 一定要定义成 public
//
js 全局变量:
myPlugin 中方法不能互相调用, 在多个C# 和 js方法 间 共享内存:
window.test ="123";
document.test= "123";
总结
参考文献:
https://docs.unity3d.com/cn/current/Manual/webgl-interactingwithbrowserscripting.html