SendMessage消息与统一webgl的数组参数

问题描述 投票:0回答:2

统一的SendMessage只能传递一个参数,它可以是一个数组。所以我打电话给我的JavaScript的sendMessage和调用C#方法(实际上可以WebGL的方法)

var arr = [x,y,z];
gameInstance.SendMessage("Cube","SetGameObjectPosition",arr);

但得到这个错误

调用错误处理程序因

未捕获的2,2,2是不具有通过SendMessage函数支持的类型。 [违反]“点击”接过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

unity3d unity-webgl
2个回答
1
投票

SendMessage Docu

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;

或类似的东西


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);
}
© www.soinside.com 2019 - 2024. All rights reserved.