2017-07-27 3 views
0

Ich habe ein Spiel mit der Einheit machen beschlossen + node.jsWie kann ich eine Callback-Funktion auf Unity JS machen

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

versucht, mit dieser Bibliothek verwenden unityscript

hier ist mein Code, so weit

#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); 
      }); 
     } 
    } 
} 

aber diese Linie

gibt, dass Fehler

Aktiva/SocketIOScript.js (24,52): BCE0019: 'id' ist kein Mitglied von 'Objekt'.

und als ich versuchte, zu sehen, was die Art der „Daten“

ist
print(typeof data); 

es sagt

Newtonsoft.Json.Linq.JObject 

Ich weiß nicht, was zu tun ist. Es dauerte meine ganzen gestern, so habe ich beschlossen, hier fragen

btw hier ist C# -Version von dem, was ich versuche (von socket.io-Einheit Demo) zu erreichen

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

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

Funktioniert 'print (data [" id "])? Wenn nicht, was bekommst du, wenn du 'print (data.toString())' tust? –

Antwort

0

Ich habe erkannt, dass Callback-Funktionen sind die gleichen wie Javascript-

und löste das Problem durch Zugabe von

import SimpleJSON; 

und dann

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

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

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