zoukankan      html  css  js  c++  java
  • 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吧参数分割开这样就巧妙地实现了多个参数的传递

  • 相关阅读:
    由于服务主机:DCOM服务进程占用过多CPU,导致系统卡死
    MySQL优化
    input type="file"文件上传到后台读取
    mysql 创建事件
    Quartz.Net实现的定时执行任务调度
    js 编码详解
    C# DateTime.Now 详解
    C# 读写text 详细讲解
    百度地图API详细介绍
    layui table 详细讲解
  • 原文地址:https://www.cnblogs.com/zj-kingder/p/6805569.html
Copyright © 2011-2022 走看看