質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
C#

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

Unity

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

Q&A

解決済

4回答

948閲覧

for文、配列の応用について

Kay.

総合スコア18

C#

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

Unity

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

1グッド

0クリップ

投稿2018/10/22 08:12

for文と配列の組み合わせは実際にゲームを作るときどういう場面で使うのでしょうか。
具体例を挙げながら教えて下さると非常に助かります。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答4

0

Unity でプログラミングしている人のコードでこんなのをよく見ます。

C#

1Enemy enemy1 = new Enemy(); 2enemy.Attack(); 3Enemy enemy2 = new Enemy(); 4enemy.Attack(); 5Enemy enemy3 = new Enemy(); 6enemy.Attack(); 7Enemy enemy4 = new Enemy(); 8enemy.Attack(); 9Enemy enemy5 = new Enemy(); 10enemy.Attack(); 11Enemy enemy6 = new Enemy(); 12enemy.Attack(); 13Enemy enemy7 = new Enemy(); 14enemy.Attack(); 15Enemy enemy8 = new Enemy(); 16enemy.Attack(); 17Enemy enemy9 = new Enemy(); 18enemy.Attack(); 19Enemy enemy10 = new Enemy(); 20enemy.Attack(); 21Enemy enemy11 = new Enemy(); 22enemy.Attack(); 23Enemy enemy12 = new Enemy(); 24enemy.Attack(); 25Enemy enemy13 = new Enemy(); 26enemy.Attack(); 27Enemy enemy14 = new Enemy(); 28enemy.Attack(); 29Enemy enemy15 = new Enemy(); 30enemy.Attack(); 31Enemy enemy16 = new Enemy(); 32enemy.Attack(); 33Enemy enemy17 = new Enemy(); 34enemy.Attack(); 35Enemy enemy18 = new Enemy(); 36enemy.Attack(); 37Enemy enemy19 = new Enemy(); 38enemy.Attack(); 39Enemy enemy20 = new Enemy(); 40enemy.Attack();

そしてこんな質問を見ます。

「enemyXX をループで使いたいです」

そんな時に使います。

投稿2018/10/22 08:36

Zuishin

総合スコア28662

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

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

退会済みユーザー

退会済みユーザー

2018/10/22 08:39 編集

そう書く人を馬鹿にしているわけではないのですが(自分も書きかねなかったし)、思わず笑ってしまいました。あるあるネタですね。
Zuishin

2018/10/22 08:42

やっぱりあるあるなんですか。 エディタが優秀なのも善し悪しですね。
退会済みユーザー

退会済みユーザー

2018/10/22 08:53

そうですね、間口が広がっちゃって。ただ、こういった問題を明らかにし、改善するのに役立つという意味ではよいかもしれません。概念を実用に接地させやすい気もしますし。
Kay.

2018/10/22 10:40

for文使わないとこんな重労働が、、、かなり便利な文なんですね。 回答ありがとうございました。
Kay.

2018/10/22 11:08

ちなみにこのスクリプトを書き直すとどのようになるのでしょうか。
Zuishin

2018/10/22 11:51

書き直せません。リフレクションを使うか配列を使う必要があります。
Zuishin

2018/10/22 11:58

配列ではなく List でもできます。 var list = Enumerable.Range(0, 20).Select(_ => new Enemy()).ToList(); foreach (var enemy in list) enemy.Attack();
Kay.

2018/10/22 12:29 編集

やっぱりまだ私の知識量では理解できないので、その内調べたいと思います(笑)
guest

0

配列をどういうことで使用するかを考えれば自ずと分かるはず。

  • 登場するキャラクターの配列
  • 背景等の部品の配列

などなど。

それらを順番に処理する場合、for文やforeach文を使うことになるでしょう。

投稿2018/10/22 08:27

PineMatsu

総合スコア3579

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

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

Kay.

2018/10/22 10:47

複数の要素について繰り返し同じ処理をしたいときにfor文を使う、という解釈で合っているしょうか。
PineMatsu

2018/10/23 08:12

一般的にはそうです。ただ、ループ変数に応じて処理を変えたりもできますので同じ処理になるとは限りません。例えば、偶数番目と奇数番目で処理を変えるとか、などなど。
guest

0

ベストアンサー

何かしらの要素群をまとめて処理したいときなどに使います。

たとえば、アイテムやモブ、破壊可能オブジェクトなどを配列に格納しておいて、ソートしたり、破壊したり、色を変えたり、設定を変更したり…さまざまあります。

たとえば、「R2ボタンを押したとき、一番近い敵にロックする」という処理をする場合、敵の一覧を取得します。そして、その一覧から一番近い敵を探します。このとき、敵の一覧である配列をfor文で走査して、一番近い敵を探し出すわけです。

投稿2018/10/22 08:24

編集2018/10/22 08:28
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Kay.

2018/10/22 10:52

具体的でわかりやすい回答でした。ある程度理解できたので、簡単な処理を書いて試してみようと思います。 回答ありがとうございました。
guest

0

配列の要素を順次取得して、値を加工するときなど。

投稿2018/10/22 08:21

koizumi

総合スコア230

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

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

Kay.

2018/10/22 10:56

for文を使えば配列内の値を加工出来るのですね。 回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問