2016-06-12 7 views
2

関数を実行し、戻り値を関数のパラメータとして取得する方法はありますか?私は何かが起こる前に一定の時間(秒)待つためにそこにある関数のトンが私のコードの中に横たわっています。ある状況でのみ使用するので、私はそれらを何らかの形で使用する方法の中に入れたいと思っていました。 (私はUnity3Dを使用しています。)例:私はSayHiAfterSecondsの内側sayHiCoroutine機能を入れたいメソッドをメソッド内で実行することはできますか?

public void SayHiAfterSeconds(float seconds) { 
    StartCoroutine(sayHiAfterSeconds(seconds)); 
} 
IEnumerator sayHiCoroutine(float seconds) { 
    yield return new WaitForSeconds(seconds); 
    print("Hi."); 
} 

。次のようなもの:

public void SayHiAfterSeconds(float seconds) { 
    StartCoroutine(IEnumerator() { 
     yield return new WaitForSeconds(seconds); 
     print("Hi."); 
    }); 
} 

これは可能ですか?おかげさまで

+0

@Valentinはレコードのためだけで、重複していません。これは約**コルーチン** – Fattie

+0

こんにちは@ 283です。あなたは大丈夫です。あなたはUnityについて面白いことに遭遇しました。あなたはしばしばコルーチンを始める以外に何もしない機能を見ます。 **これは多くのチームで非常に一般的です:**メインコールは** SayHiAfter **と呼ばれます。一致するコルーチン**はアンダースコアと小文字で同じですので、** "_ sayHiAfter" **です。私はあなたに「そうするべき」と言っているでしょう。**ユニティエンジニアの間では通常のイディオムです**。 – Fattie

+0

これは非常にはっきりしています:** NORMALLY、あなたはこれまでに名前を始めるためにアンダースコアを使用してきたことはありません - 過去に事態が変わった時から、これは本当に信じられないほど古い、愚かで悪い考えです。だから、決してUnityの "アンダースコアの始まりの名前"アイデアを決して使用することは決してありません。しかしこれは非常に例外的な状況です。私が言うことができるのは、この場合、それが適切であると感じているということです(それは "ローカル" "付随的な" "関連する"本当にうまくいっている)こと、そしてそれが非常に一般的であることを示しています。だから、私はそれをすることをお勧めします。 – Fattie

答えて

1

短い回答:いいえ

couroutineを別の関数に入れることはできませんが、別の関数から呼び出すことはできます。これはbeforeと尋ねられました。

+0

申し訳ありませんが、ありがとうございます。コルーチン関数の名前を付ける良い方法はありますか? – 283

+0

@ 283私のために、私はそれを直接呼び出すのが好きではありません。私は別の関数から呼び出します。たとえば、 'sayHiCoroutine'コルーチン関数の名前を' SayHiAfterSecondsCRT'とすると、あなたが呼び出す関数は 'SayHiAfterSeconds'になります。そうすれば、 'CRT'はコルーチンであると判断され、' CRT 'がない 'SayHiAfterSeconds'は' CRT'で終わるものではなく、呼び出す関数であることがわかります。コルーチン関数の最後にあるCRTを除いて、名前は常に同じでなければなりません。そうすれば、どの関数がどの関数を呼び出すのかが分かりにくくなります。 – Programmer

+0

ありがとうございます。私は自分のコルーチン機能をどのように命名するかわからなかったので、私のコードが非常に乱雑になっていると感じました! – 283

関連する問題