-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;
}
「StringToVector3」とは何ですか? 'void'リターンタイプ、または' Action'の関数を呼び出すようです。 – Rob
'StringToVector3'を追加しましたが、除外しても同じエラーが表示されます。ご協力ありがとうございました! – pudility
'StringToVector3'は既に' Vector3'を返しています - 本当にコンストラクタに渡す必要がありますか? 'Instantiate(player、StringToVector3(chat.msg)、Quaternion.identity);' – Rob