teratail header banner
teratail header banner
質問するログイン新規登録
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

332閲覧

while文を一つにまとめたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/12/05 10:22

0

0

###前提・実現したいこと
※ソースコードは伝え易くす為、簡略化してます
Unityでゲームを作っていて、damにatt分の数値を追加する処理を書いているのですが(普通に足さずにこのような繰り返しとコルーチンを使った書き方をしているのは目視できるようにゆっくり数値を追加したいからです。)、必要分のwhile文を書くとコンパクトじゃないので、三つのwhile文を一つにまとめたいと思っています。
しかし、A,B,Cそれぞれで繰り返す回数が違うので、どうやってまとめればよいか分からず悩んでいます。
説明が不自由ですが、ご指摘・ご回答頂けると幸いです。よろしくお願いします。

###発生している問題・エラーメッセージ
なし。

###該当のソースコード

C#

1int damA = 0; 2int damB = 0; 3int damC = 0; 4int attA = 3;//数値は変動する 5int attB = 5;//数値は変動する 6int attC = 10;//数値は変動する 7 8 void Update() 9 { 10 if (Input.anyKey) 11 { 12 //コルーチンを実行 13 StartCoroutine("AddDamage); 14 } 15 } 16 17IEnumerator AddDamage() 18 { 19 int a = 0; 20 //attA分の数値を足す 21 while (a <= attA) 22 { 23 damA ++; 24 a ++; 25 yield return new WaitForSeconds(0.2f); 26 27 } 28 int b = 0; 29 while (b <= attB) 30 { 31 damB ++; 32 b ++; 33 yield return new WaitForSeconds(0.2f); 34 35 } 36 int c = 0; 37 while (c <= attC) 38 { 39 damC ++; 40 c ++; 41 yield return new WaitForSeconds(0.2f); 42 43 } 44 } 45 46

###試したこと
ネットで調べましたがこのような件が少ないせいか望んでいるような回答を見出せませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
Unity 2017.2.0f3 (64-bit)
C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

csharp

1int a = attA; 2int b = attB; 3int c = attC; 4while( a > 0 || b > 0 || c > 0){ 5 if(a > 0){ damA++; a--;} 6 if(b > 0){ damB++; b--;} 7 if(c > 0){ damB++; c--;} 8 yield return new WaitForSeconds(0.2f); 9}

投稿2017/12/05 11:28

asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asm

2017/12/05 11:32

1回少ない気もするけど気になるようなら int a = attA + 1; 等とするといいかも
退会済みユーザー

退会済みユーザー

2017/12/05 12:43

なるほど!ありがとうございます!
guest

0

変数に配列を使用するか、少し難しい処理になるかもしれませんがyieldを使用されるとよいかもしれません。

投稿2017/12/05 11:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/05 12:43

回答ありがとうございます!調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問