2017-02-08 15 views
0

次のコードがありますが、私の関数Insert()の呼び出しは機能しません。C#関数呼び出しが機能しません

void Update() { 
    if (Input.GetKeyDown(KeyCode.Space)) { 
     Insert(); 
    } 
} 

public IEnumerator Insert() { 

    WWWForm form = new WWWForm(); 
    //add some fields 

    WWW request = new WWW(url, form); 
    yield return request; 

    string result = request.text; 

    if (result == "error") { 
     yield return null; 
    } 
    print(result); 
} 

私はUnityと仕事、そして私はInsert()機能Start()を(起動時に直接呼び出すことにする)の名前場合、機能がうまく動作し、問題はありません。

問題の内容と解決方法をご存知ですか? ありがとうございました。

+4

Start関数は、StartCorutine(Insert())、 –

+0

という名前のコルーチンを作成したように見える、Updateのような特殊関数です.Updateでブレークポイントを設定するとあなたがそれを実行するとどうなりますか? – sab669

+0

これはあなたがどこかでそのメソッドを呼び出さなければならないことを意味します。なぜなら、 'Insert'は*そのような*特別な名前ではないため、1で処理されないからです。 – HimBromBeere

答えて

1

を試してみてください。

代わりにこれを試してみてください:

void Update() { 
    if (Input.GetKeyDown(KeyCode.Space)) { 
     StartCoroutine(Insert()); 
    } 
} 

はまた、この答えは、コメントであなたに数回を知らされたが、問題を解決し、それが簡単に他の人が実行しているために作るためにと、私は答えを投稿しています答えを早く見つけるために、この問題に取り組んでください。

0

はあなたがIEnumeratorsのために必要とされるStartCoroutineを使用していない

if (Input.GetKeyDown("space")) 

代わりのif (Input.GetKeyDown(KeyCode.Space))

+1

ifが正しく動作するため、解決策ではないと思います。 – iAmoric

+2

'Input.GetKeyDown'は' String'と..の両方のためのオーバーロードを持っています。私は 'KeyCode'がおそらくenumであると仮定します。試しても害はありませんが、違いがあれば徹底的に驚いています。他の人が言っていたように、 'Update'から' Insert'を呼び出す方法は、複数回呼び出される(おそらく)ので、 'Start'から呼び出されたときには、 。 – sab669

関連する問題