ターン制のバトルシーンの作成をしています。(RPGの戦闘です。)
いろんな記事を読み漁りましたが、「foreach内にある関数をそれぞれ一つ終わって、次を始める。といった処理順番にしたい。」という疑問が解決できず、質問しております。
forにいれると、async awaitで処理の同期をとれるという記事は見ましたが、自分の作っているコードの状況的にできることならforeachの中の同期をとりたいと思っています。
問題のコードは下記コードです。
C#
1async void Attack(System.Linq.IOrderedEnumerable<System.Collections.Generic.KeyValuePair<int, int>> dic) 2 { 3 await Task.Delay(1000); 4 foreach (KeyValuePair<int, int> item in dic) 5 { 6 7 if (item.Key < MasterData.AllyMemberSelectedArray.Length) 8 { 9 10 if (!isDeadAlly[item.Key]) AllyAttack(item.Key); 11 12 } 13 else 14 { 15 var key = item.Key - MasterData.AllyMemberSelectedArray.Length; 16 if (!isDeadEnemy[key]) EnemyAttack(key); 17 } 18 } 19 return; 20 }
記事を読み漁りましたが例を見つけられず、また、アイディアも浮かばなかったため質問です。よろしくお願いします。