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

  • 相关阅读:
    硬盘内部结构简析
    python之集合
    Python中的浅拷贝与深拷贝
    Python内存管理机制
    python之编码decode
    project euler之Large sum
    project euler之 网格中最大的产品
    project euler之 素数的总和
    project euler之特殊的毕达哥拉斯三重奏
    project euler之系列中最大的产品
  • 原文地址:https://www.cnblogs.com/zj-kingder/p/6805564.html
Copyright © 2011-2022 走看看