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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值