実現したいこと
簡易なガチャを作っていてガチャを回した後にカプセルが出てきて割れて、といった一連の動きが終わるまでの間
次のガチャを出すボタンが押せないようにしたいのですがこのような場合、コルーチンを使うのが適切なのでしょうか。
コルーチンについてはよくわからなくて見よう見まねで処理を待機させたい時に1度だけ使った事が有るのですがその時は上手く動いてくれて今回、その上手く動いた時のコードをコピーしているだけなのですがどうも、上手くいきません。
もしかしてif文の中にはコルーチンは書けないのでしょうか?
発生している問題・分からないこと
コルーチンを使う上での注意点があれば知りたいです
書き方がとても回りくどくて
スタート宣言→IEnumerator?→わざわざそっちでも新しい関数作るの?
めちゃくちゃ難しいのですが・・・
該当のソースコード
if(ガチャボタンが押されたら) //省略して書いてます { CoverText.text = "何が出るかな?"; Gatya(); //ガチャを引く関数 StartCoroutine("waitPush"); ↓ここに赤波線が出ていてエラーで動かない IEnumerator waitPush() ←ここに赤波線が出ていてエラーで動かない { moveButton.GetComponent<Button>().interactable = false; yield return new WaitForSeconds(5.0f); // ボタンを5秒間、押せないようにする moveButton.GetComponent<Button>().interactable = true; //ボタンが押せるように戻す CoverText.text = "長押しでガチャを回そう"; } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
初心者として率直な印象は「数秒待つだけ」でこんな煩雑に書かないといけないのか・・・です
〇秒待ってから実行したい、とか
この関数の処理が終わってから実行したい、という事が頻発するのですがその度にコルーチンを使うしかないのでしょうか。
補足
特になし
StartCoroutine("waitPush"); の部分は
StartCoroutine(waitPush()); と書く方法もあるみたいですが
その違いもわからないです。前にコルーチンを使った時はどっちで書いてもちゃんと動いてくれているようでした。
どちらの書き方でも問題無いのでしょうか。
コルーチンは関数として定義する必要があります。
なので、ifの中に書くとエラーになります。
コルーチンの呼び出しは、文字列でも出来ますがスペルミスしても気付けないので、
StartCoroutine(waitPush()); とするほうがおすすめです。
スペルミスやコルーチンの未定義だったらコンパイルエラーで気付けるので。
そうなんですね
今後は StartCoroutine(waitPush()); のほうで書くようにします
コメントありがとうございました

回答2件
あなたの回答
tips
プレビュー