我如何在 Unity JS 上创建回调函数

how can i make a callback function on Unity JS

我决定用 unity + node.js

做一个游戏

https://github.com/floatinghotpot/socket.io-unity

尝试将此库与 unityscript 一起使用

到目前为止,这是我的代码

#pragma strict

import System.Collections.Generic;
import UnityEngine.UI;
import Quobject.SocketIoClientDotNet.Client;

public class SocketIOScript extends MonoBehaviour {

    var _socket : Socket;

    function Start () {
        if(!_socket) {
            _socket = IO.Socket("http://localhost:3000");
            _socket.On("connect", function(asd) {
                _socket.Emit("chat", "hello");
            });
            _socket.On("chat", function(data) {
                print(data.id);
            });
        }
    }
}

但是这一行

            _socket.On("chat", function(data) {
                print(data.id);
            });

给出那个错误

Assets/SocketIOScript.js(24,52): BCE0019: 'id' is not a member of 'Object'.

当我试图查看 "data"

的类型时
print(typeof data);

它说

Newtonsoft.Json.Linq.JObject

我不知道该怎么办。花了我整个昨天,所以我决定在这里问

顺便说一句,这是我要完成的工作的 C# 版本(来自 socket.io-unity 演示)

    socket.On ("chat", (data) => {
        string str = data.ToString();

        ChatData chat = JsonConvert.DeserializeObject<ChatData> (str);
        string strChatLog = "user#" + chat.id + ": " + chat.msg;

我发现回调函数和javascript

一样

并通过添加

解决了问题
import SimpleJSON;

然后

_socket.On("chat", function(param) {

    var data = JSON.Parse(param.ToString());

    print(data['id']);
    print(data['msg']);