Unity SendMessage只能传递一个参数,它可以是一个数组。所以我在用JavaScript调用sendMessage并调用C#方法(实际上是webgl方法)
var arr = [x,y,z];
gameInstance.SendMessage("Cube","SetGameObjectPosition",arr);
但收到此错误
由于以下原因调用错误处理程序
未捕获的2,2,2不具有以下类型支持的类型 发信息。 [违反]“点击”处理程序花费了8994ms blob:http://localhost/1ff50200-cb3a-4367-ab45-f02e9734fac2:2未捕获 2,2,2没有SendMessage支持的类型。
SendMessage @ blob:http://localhost/1ff50200-cb3a-4367-ab45-f02e9734fac2:2
SendMessage @ UnityLoader.js:4
SetObjectPosition @(索引):44
onclick @(索引):65(索引):65
[违反]“点击”处理程序花了9000ms
答案 0 :(得分:2)
您可以传递json字符串:
var pos = {x:1,y:2,z:3};
gameInstance.SendMessage("Cube","SetGameObjectPosition", JSON.stringify(pos));
团结一致:
void SetGameObjectPosition(string data)
{
var position = JsonUtility.FromJson<Vector3>(data);
}
答案 1 :(得分:1)
SendMessage(objectName, methodName, value);
objectName
是场景中对象的名称;methodName
是脚本中当前附加到该对象的方法的名称;value
可以是字符串,数字或为空。
->不,它不能是数组
但是似乎您想传递一个头寸,以便作为一种变通方法,可以传递诸如“ 2,2,2”之类的字符串并使用
string[] numberStrings = ("2,2,2").Split(",");
float x = float.TryParse(numberStrings[0], out x) ? x : 0;
float y = float.TryParse(numberStrings[1], out y) ? y : 0;
float z = float.TryParse(numberStrings[2], out z) ? z : 0;
或类似的东西