【Unity】初めて配列を使う場合について

新年になり初めての投稿になります。年末年始は忙しいようなそうでもないような状態でしたが放置している期間が長くなってしまいました。

今年も為になる記事を書いていきたいと思っていますのでどうぞよろしくお願いします!

新年一発目にふさわしい記事が浮かばずUnityの配列に関する話になります。まぁUnityも制御文以降何も投稿していませんでしたので、久しぶりといえば久しぶりなんでまあ良しとします。

Unityにおける配列について

プログラミング経験者なら分かると思いますが、配列はプログラミングにおいて超必須なアイテムになります。特にゲームを作るとなると尚更重要視されます。

スマホで出来るアクション系のゲームは、ゲームが終わった後に得点やランキングに登録できるものが多いですよね?そして、他のユーザーの得点やランキングも確認も出来る事があります。

このユーザーの得点などをひとまとめにして扱う際に利用するのが配列です。自分のランキングなどが分かる機能は基本的に配列という要素が使われていると考えて下さい。

配列のイメージ図

これは配列のイメージ図です。ペイントでマウスを使って描きましたが相変わらず汚くてすみません!ペンタブ持ってたけど失くしてもうた・・・。どこいったんや~!

まあそれはさておき配列は、変数の箱がくっついた細長い箱をイメージしてもらえればと思います。例としてint型のrank(ランキング)という変数を用意しました。それぞれの箱にユーザー毎のランキングが入る感じですね。

配列を使ったスクリプトを作成してみる

実際に配列を使ってみましょう。先ほども少し話しましたがゲームを作成する場合は、得点などを管理する場合に使います。

仮に配列という機能がない場合、それぞれのユーザーに対して1つずつ変数を作成しなければなりません。

配列を使わずに複数の変数を宣言する

スクリプトにするとこんな感じになります。3人までしか扱えないようにするのであればこれで問題ありませんが、ちょっと物足りなさすぎます。

この書き方で100人とか1000人分のデータを扱おうとすると、極端な話変数を100回以上も宣言しなければなりません。これは非常に面倒臭い作業ですし、ソースコード的にも良くないです。後で見た時なんのこっちゃ分からなくなるかもしれませんしエラーが発生すると厄介です。

コレを解消する為に配列という機能があるわけです。配列を使えば先ほどのようにユーザー数分の変数を宣言する必要がなくなります。

配列を宣言する

それでは、配列を使う為の準備をします。

int[] tokuten;

はい!これだけで配列を利用する準備が整いました。配列を宣言する場合はこのように「[]」を付けるだけで良いんです。覚えやすいですよね!?ちなみに「int[]」ですので、整数の配列型を宣言した事になります。

続いて、変数の箱を何個用意するのかを指定します。

tokuten = new int[5];

今度は一気にややこしくなったような気がしますね・・・。

「new」という単語が出てきましたが、これは箱を作りますよ~という意味になります。今回は「new int[5]」という事でint型の箱を5つ作るという事になります。何個箱を用意するかは[]の中に数字を指定すれば大丈夫です。

配列の使い方

箱を準備したところでよくある使い方を説明します。

unityで配列を使ったサンプルプログラム

12行目~17行目でそれぞれの箱に得点を代入しています。初めての方はこの画像を見て違和感を感じる箇所があると思います。それは、12行目のtokuten[0]=50;の部分ですね。

箱を5つ用意して最初の箱だから0じゃなくて1じゃないの?という疑問です。しかし、配列は0番目から数えるのが決まりになっているんです。これは配列を扱う上で大事な基礎となるので是非覚えておきましょう。

これを踏まえると、5番目の箱に対して代入するなど処理をしたい場合は先頭が0から始まるのでマイナス1して4番目を呼び出す事になりますね。ちょっとややこしいですが間違わないようにしてくださいね。

そして、それぞれの箱に代入した得点をfor文を使って表示させています。わざわざDebug.Logを何度も記述しないようにする為にfor文を使っています。

箱の中身を呼び出す場合は0からスタートですので、for文の中も0~4までループするように設定しています。配列とfor文は非常に相性抜群ですのでセットで使う事を意識するといいです。

unityで配列を使ったサンプルプログラムの出力結果

実行結果はこんな感じですね。それぞれの得点がちゃんと出力されています。

説明が長くなりましたが、配列の箱の中に入れる値を要素と言い、総数を要素数と呼びます。今回の例では、得点数が要素で要素数は5になります。

配列の初期化を簡潔に記述するようにする方法

上の例では、12行目から16行目のように毎回要素を代入していますが、これをひとまとめにする簡易記法があります。

int[] tokuten = {50,30,40,70,90};

こういった書き方です。一文にまとまりとてもシンプルになりました。特に、要素数が少ない場合に有効な書き方です。newを使わなくても大丈夫です。

逆に要素数が滅茶苦茶多い場合は、このような書き方は不向きですね。

unityで配列の初期化を簡潔にした場合のサンプルプログラム

この記述方法で、先ほど同様それぞれの要素を出力するプログラムを組みました。かなりすっきりしているのが分かりますよね?

それから、for文の中をちょっと細工してみました。「tokuten.Length」とありますがこれは、tokutenという配列が持っている長さを取得します、要素数の事ですね。つまりは「5」を引っ張ってくるという事になります。

この書き方も結構便利ですので、要素数を指定したい場合は是非使ってみてください。

まとめ

配列の使い方について説明しました。配列とfor文の組み合わせでさまざまな計算を簡潔に行うことが出来ます。よくあるパターンは、得点の合計点数を出したりそこから平均値を割り出すプログラムですね。

得点を競うアクションゲーム等の平均値が分かれば自分のレベルがどれぐらいなのかが把握できるようになりますよね。ランキングも然り。

ですから、みなさんがプレイしているゲームはプログラミングにおいてたくさんの配列が使われているという事です。ドラクエなどのRPG等を作りたい場合は特に使い方をコンプリートしておきたい所です。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク