質問: アクションの様にフレーム毎に動くことを前提としたゲームならUpdateに移動処理の関数を入れ、その関数にフレームの更新間隔でループさせれば良いと思うのですが、RPGのキャラ移動のように例えばキー入力がされるまで処理を止めることが上手く出来ません。 ソースはこのような感じです。 ``` 01: void Start () { 02:StartCoroutine (CoroutineSample()); 03:} 04: 05:void Update () { 06:} 07: IEnumerator CoroutineSample(){ 08: WaitWhile (!Input.anyKeyDown){ yield return 0; }//キー入力まで処理を止める 09: 10: if(Wのキーを押したとき、キャラが上に移動する処理) 11: 複数のelse if(他のキーを押したとき、Aなら左、Sなら下、Dなら右に移動する処理) 12: 13: }//CoroutineSample()を閉じる括弧 ``` ところがこれでビルドすると、 > > `WaitWhile (!Input.anyKeyDown){ yield return 0; }`に(;が必要です)。 > > > とエラー文が出てビルドが成功しません。 どこを変えればビルドが成功するのでしょうか? ご教授していただければ幸いです。
回答: WaitWhile()の使い方が間違っているように思います。 おそらく下記のように書くと意図通りになるのではないでしょうか。 ``` yield return new WaitWhile(() => !Input.anyKeyDown); ``` WaitWhile()の詳細はUnityのスクリプトリファレンスをご覧ください。 Unity - スクリプトリファレンス: WaitWhile