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

时间:2017-07-27 12:08:01

标签: socket.io json.net unityscript

我决定用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'不是'Object'的成员。

当我试图查看“数据”的类型时

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;

1 个答案:

答案 0 :(得分:0)

我意识到回调函数与javascript相同

并通过添加

解决了这个问题
import SimpleJSON;

然后

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

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

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