如何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
我正在使用 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