Unity 发布的 WebGL 使用SendMessage传递多个参数

Posted 小白呆不呆呆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 发布的 WebGL 使用SendMessage传递多个参数相关的知识,希望对你有一定的参考价值。

如果要实现Unity与浏览器的数据交互一般都会采用两种方式

方法一:

Application.ExternalCall("SayHello","helloworld");

这种方式可以在Unity中调用伊尔迷案中的JS函数

 

方法二:

SendMessage("Main Camera", "FunctionName", “参数”);

这种方式可以在网页中用JS代码往Unity中传递参数,调用对应的函数

 

但我在平时使用的过程中法闲了一个问题就是SendMessage只接受一个参数,这就非常尴尬了,万一我们预留的函数需要多个参数呢,这个问题困惑了我好几天

 不论你怎么尝试着传递参数都会出现这种错误

我试过这样

SendMessage("Main Camera", "SetWenDu", 33,22);

还有这样

SendMessage("Main Camera", "SetWenDu", “33”+“22”);

但时候都会出现这种错误

直到我有一天看到了一个国外的博客

 

尊重版权我把原链接粘贴上

http://www.feedingedge.co.uk/blog/2011/03/09/browser-to-unity3d-communication-and-back-again/

 

 

我发现Unity的SendMessage本来就只支持一个参数,难怪我一直不成功

博客中使用了一种自定义分隔符的方式实现了多个参数的传递

 

 

unity中:

void inboundfunction(string indata)
{

string[] words = indata.Split(\'~\');

data1 = words[0];
moredata2 = words[1];
anotherpiece3 = words[2];

}

 

JS中:

<script type=”text/javascript”>
<!–
function callbackunity(arg)
{
alert(arg);
var unity = unityObject.getObjectById(“unityPlayer”);
unity.SendMessage(“Rezzer”, “inboundfunction”, “item1~item2~item3”);
}
–>
</script>

 

这种方法把多个参数合并成一个参数在C#中使用split吧参数分割开这样就巧妙地实现了多个参数的传递

 

以上是关于Unity 发布的 WebGL 使用SendMessage传递多个参数的主要内容,如果未能解决你的问题,请参考以下文章

unity2019怎么设置webgl的发布内存?

Unity 发布的 WebGL 使用SendMessage传递多个参数

unity 发布webgl怎么加载assetbundle

求助!怎么把html嵌入unity所发布的webgl中啊???

Unity在WebGL平台上的性能基准测试

Unity 之 发布WebGL并部署到GitHub供外部访问 (Unity | WebGL | GitHub | 内嵌网页)