2017-07-18 13 views
-1

「`1' になりません`をSystem.Actionを委任:私はそれを実行しようとするとユニティ:私は次のコードを持っているの引数

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

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

       int pos = userArr.IndexOf (chat.id); 
       if (pos > -1) { 
        var InsObj = Instantiate (player, StringToVector3 (chat.msg), Quaternion.identity); 
        InsObj.name = chat.id; 
        userArr [userArr.Length + 1] = chat.id; 
       } 

       // Access to Unity UI is not allowed in a background thread, so let's put into a shared variable 
       lock (chatLog) { 
        chatLog.Add (strChatLog); 
       } 
      }); 

を、私はこのエラーを取得する:

Assets/SocketIO/SocketIOScript.cs(59,23): error CS1593: Delegate `System.Action' does not take `1' arguments 

しかし、この部分を削除すると:

int pos = userArr.IndexOf (chat.id); 
       if (pos > -1) { 
        var InsObj = Instantiate (player, StringToVector3 (chat.msg), Quaternion.identity); 
        InsObj.name = chat.id; 
        userArr [userArr.Length + 1] = chat.id; 
       } 

うまくいきます。

私はこれがなぜ起こっているのだろうと思っています。私はかなり長い間それを理解しようとしています。私はthisの投稿を見つけましたが、それは私にはあまり役に立ちませんでした。はと指定できると思います。

EDIT:

StringToVector3は(私はまだエラーを取得StringToVector3を取り除くしかし場合でも)、次のコードが含まれています。

public static Vector3 StringToVector3 (string sVector) 
    { 
     // Remove the parentheses 
     if (sVector.StartsWith ("(") && sVector.EndsWith (")")) { 
      sVector = sVector.Substring (1, sVector.Length - 2); 
     } 

     // split the items 
     string[] sArray = sVector.Split (','); 

     // store as a Vector3 
     Vector3 result = new Vector3 (
          float.Parse (sArray [0]), 
          float.Parse (sArray [1]), 
          float.Parse (sArray [2])); 

     return result; 
    } 
+0

「StringToVector3」とは何ですか? 'void'リターンタイプ、または' Action'の関数を呼び出すようです。 – Rob

+0

'StringToVector3'を追加しましたが、除外しても同じエラーが表示されます。ご協力ありがとうございました! – pudility

+0

'StringToVector3'は既に' Vector3'を返しています - 本当にコンストラクタに渡す必要がありますか? 'Instantiate(player、StringToVector3(chat.msg)、Quaternion.identity);' – Rob

答えて

0

問題は、私はSystem.Array.IndexOf代わりのuserArr.IndexOfを使用するために必要なことでした

関連する問題