如何return js对象统一

how to return js object to unity

我正在使用 Google Draco 解码器对以下网格进行解码。

var dracoGeometry;
dracoGeometry = new decoderModule.Mesh();
decodingStatus = decoder.DecodeBufferToMesh(buffer, dracoGeometry);

当我检查 draceGeometrytry 的类型时: console.log( typeof dracoGeometry);

我明白了

“对象”类型。

现在我的问题是“我怎样才能return这个对象来统一”。 C# 支持什么 return 类型来接受 js 对象?

您可以发送字符串或数字,所以我要做的是创建一个包含您需要的数据的 js 对象,然后调用 JSON.stringify 将其转换为字符串,然后使用 unityInstance.SendMessage:

function sendToUnity(obj) {
    unityInstance.SendMessage('MyGameObject', 'MyMethod', JSON.stringify(obj));
}
// in a script attached to a gameobject named "MyGameObject"
void MyMethod(string s) 
{
    Debug.Log(s);
    // decode from json, do stuff with result etc
}

至于当数据处于 JSON 字符串形式时您可以对其执行哪些操作,一旦您在 Unity 中获得 JSON 字符串,您可以使用多种解决方案对其进行解码。有关详细信息,请参阅

所以如果你的 js 看起来像这样:

function sendToUnity(obj) {
    unityInstance.SendMessage('MyGameObject', 'MyMethod', JSON.stringify(obj));
}

sendToUnity({
    playerId: "8484239823",
    playerLoc: "Powai",
    playerNick:"Random Nick"
});

你可以在 Unity 中做这样的事情:

[Serializable]
public class Player
{
    public string playerId;
    public string playerLoc;
    public string playerNick;
} 

...

void MyMethod(string s) 
{
    Player player = JsonUtility.FromJson<Player>(s);
    Debug.Log(player.playerLoc);
}

来源:

有一些方法可用,但目前似乎无法将网格从 js 发送到 unity。如果您正在使用 google draco,我建议您关注 this fork