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吧参数分割开这样就巧妙地实现了多个参数的传递

时间: 2024-11-20 10:07:26

Unity 发布的 WebGL 使用SendMessage传递多个参数的相关文章

Unity发布的WebGL页面应用实现全屏/非全屏切换

很简单,在场景中添加一个UGUI按钮,实现点击就切换全屏/非全屏状态 其实发布出webgl之后,页面上场景窗口右下会有一个按钮,就是切换全屏的,但是想用代码在程序里实现 首先看页面上那个按钮的js脚本是怎么写的 <div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div> 注意里面的代码就一行: gameInstance.SetFullscreen(1); 也就是

【Unity】开发WebGL内存概念详解和遇到的问题

自加入unity WebGL平台以来,Unity的开发团队就一直致力于优化WebGL的内存消耗.我们已经在Unity使用手册上有对于WebGL内存管理的详尽分析,甚至在Unite Europe 2015与Unite Boston 2015两届大会上,也有专题对其进行深入的讲解.然而,这方面的内容依旧是用户讨论的热门话题,因此我们意识到应当分享更多.希望本文能回答一些被频繁咨询的问题. Unity WebGL与其它平台有何不同? 一些用户已经熟悉了部分内存有所限制的的平台.而对于其它如桌面和Web

Unity 发布到IOS,Android的各种坑

Unity 发布到IOS的注意事项1.开发环境MAC环境:Xcode环境 7.2.1Unity环境:Unity5.32.基本说明首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总结出来的经验!如果你想一次就发布成功,如果你想少走弯路,请仔细看我的说明.因为坑比较多!由于Unity发布到IOS,是以Xcode工程的形式发布到MAC中,所以,在发布的时候需要注意以下几点:1. 发布的工程,需要以真机进行调试(我发布的时候,选择发布unity到模拟器版本,发布后无法用模拟器运行)2. U

unity发布exe全屏方法

首先 将该代码挂在NGUI的UIroot上或者场景的物体上 using UnityEngine; using System.Collections; public class example : MonoBehaviour { public void Awake() { Screen.SetResolution(1024, 768, true);//自己想要的分辨率,比如1024*768,true表示全屏 Screen.fullScreen = true; } } 然后发布,设置如下 unity

Unity发布安卓Splash Image适应手机、平板

问题描述: Unity发布安卓应用时,遇到只能添加一张SplashImage而需要适配手机及平板不同分辨率处理 解决方法: http://blog.csdn.net/aiyan1111111/article/details/51144617

问题:子信息不能够传递多个参数,利用脚本可以做到

问题:子信息不能够传递多个参数,利用脚本可以做到.1.加前端脚本function GridRowOnDblClick(strFile,pkValue,rowIndex){var ksrq = document.all.val_KSRQ.value;//2个控件的值var jsrq = document.all.val_JSRQ.value;//2个控件的值strFile=strFile+"&ksrq="+ksrq+"&jsrq="+jsrq;if (

CreateThread传递多个参数的方法(利用结构体的参数指针)

很多朋友一直都在问CreateThread如何传递多个参数,CreateThread传递参数的方式是指针传递的,所以这里也可以利用指针来做!Demo 关键代码如下: type  TfrmTestThread = class(TForm)    Button1: TButton;    procedure Button1Click(Sender: TObject);  private    { Private declarations }  public    { Public declarati

URL传递多个参数遇到的bug

bug所在: 通过URL传递多个参数的时候,其一是中文出现乱码,其二是空格被"%20"替代: 原因分析:原理暂时还不清楚,后续再研究下原理,只知道有中文的时候就会出现乱码:%20是url空格的编码: 提到编码,就得来简单了解下(周末再详细补充下知识)编码的几种格式: 一:ASCII码,美国标准信息交换码,只有7位. 二:UTF-8:是一种针对Unicode的可变长度字符编码,用1-6个字节 编码Unicode字符. 三:ISO-8859-1,是浏览器默认编码,包含了西方欧洲语言不可缺少

form提交时,传递额外的参数

在进行表单提交时,会遇到在提交前增加额外参数的情况,对此有如下几种解决方法: 1. 在表单里使用hidden的input,将参数放到里面. 缺点:在form表单里会增加一些input节点,感觉不爽. 2. 在提交前使用javascript动态在表单里添加input. 缺点:需要写脚本. 3. 使用ajax提交拼接参数. 缺点:如果表单里有文件需要上传,就行不通了. form提交时,传递额外的参数,布布扣,bubuko.com