うっほー!ゴッリラだよ!
先日、いつものように新しい記事をツイッターに投稿したら…
アステロイド風ゲームを作成する記事の続きを投稿しました!#gms2https://t.co/i325lBJjzP
— ゴッリラ@ゲーム開発 (@hellomanaki) November 7, 2018
Looks like this blog is translating our Space Rocks (https://t.co/wFwSHN0R1g) tutorial into Japanese! Seems like they have some other resources too. Cool! #GameMaker https://t.co/gbmqUamrtb
— YoYo Games (@YoYoGames) November 7, 2018
なんと( ゚Д゚) YoYoGames本社さんに引用RT、フォローしていただいたんだ!!
褒めてもらえて、またモチベーションがアップしたよ~(*’▽’)


ほ、ほめられているのか…? まあ、そんなことはさておき!
今回は、データをまとめて代入することのできる“配列”について解説していくよ!
一見何の役に立つのかわからないけど、実は物凄く役に立つデータ構造なんだ!
1. そもそも配列とは?
配列とは、複数の値を持つことのできる特殊な変数のことだよ!
イメージとしては、番号付きの引き出しを想像してもらえれば分かりやすいと思うよ!
配列には、変数、値、オブジェクトのidを代入することができるんだ!
これがどういったことに役立つかというと、例えば…
- ゲームのメニュー
- RPGのような沢山のアイテム、値の管理が必要になるゲーム
- カードゲームの手札管理、シャッフル
- スコア管理など
沢山の変数を宣言する代わりに、まとめて値を管理するのに役立つんだ!
前回の記事で紹介したアラームも、GameMakerStudioに用意された配列の一つだよ!

2. 配列の宣言方法
GameMakerStudioで配列を宣言するときは、以下のように記述するよ!
1 |
array[0] = "gorilla"; |
分かりやすいように、パーツに分けて紹介するね!(‘ω’)
1 |
array |
このarrayは、配列名を表しているんだ!変数のように好きな名前を付けることができるよ!
名前は、後で分かりやすいように保存している値に沿ったものにしよう!
1 |
[0] = "gorilla"; |
今回の場合は、配列の一番先頭である0番目の位置に”gorilla”という文字列を代入しているよ!
こんな風に配列は、番号と値を保存するスペースを持った、引き出しのようなものなんだ!
配列には、値のほかにも、変数、インスタンスのidを代入することができるよ!
1 2 3 4 |
name = "takuma"; array[0] = "gorilla"; array[1] = instance_create_layer(x,y,"example",o_test"); array[2] = name; |
ただし、実際に配列を宣言するときは、1つの配列に複数のデータ型の値を代入するのは避けよう!
手間だったとしても、データ型ごとに配列を宣言することをおすすめするよ!

3. 配列の使用方法
次に、実際に配列がどういったことに役立つのか、実例を見ながら学んでいこう!
配列の値を呼び出したい時は、変数名[番号]という風に記述するよ!
例 show_debug_message(array[0]);
値が代入されていない番号の値を呼び出そうとすると、エラーが起きるから注意してね!
例えば、RPGゲームで武器のステータスを表示したい時
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//武器ごとに変数を宣言 gorilla_sword = "ゴリラの剣"; gorilla_sword_damage = "30"; gorilla_sword_text = "ゴリラ向けの剣"; ice_blade = "氷の剣"; ice_blade_damage = "20"; ice_blade_text = "いわゆるつらら"; konbou = "こん棒"; konbou_damage = "3"; konbou_text = "落ちてた棒"; |
こんな風に武器1つ1つの名前、ダメージ量、説明文の変数を宣言する方法と
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//カテゴリーごとに配列を宣言 weapon[0] = "ゴリラの剣"; weapon[1] = "氷の剣"; weapon[2] = "こん棒"; damage[0] = 30; damage[1] = 20; damage[2] = 3; text[0] = "ゴリラ向けの剣"; text[1] = "いわゆるつらら"; text[2] = "落ちてた棒"; |
配列を使った方法の2つがあるよ!どっちのほうが管理するのが楽に見える?
後者のほうが分かりやすいよね!実際にステータスを表示するときも
1 2 3 4 5 6 7 8 9 10 11 |
//比較 //変数の場合 show_debug_message(gorilla_sword); show_debug_message("ダメージ量"+string(gorilla_sword_damage)); show_debug_message(gorilla_sword_text); //配列の場合 show_debug_message(weapon[0]); show_debug_message("ダメージ量"+string(damage[0])); show_debug_message(text[0]); |
変数を使った場合、変数名を全て覚えておかないといけないのに対して、
配列の場合は、目的の値を代入した番号を覚えておくだけで良いので管理が楽だね!
また、途中で変数名を変更した場合は、全てを書き換えないといけないよね(´・ω・`)
変数の数が少ない内は、どっちでも良いように思えるかもしれないけど、
宣言する変数が100個あった場合…もうわかるよね?
4. 二次元配列
ここまで紹介したのは、1次元配列と呼ばれている、
データを代入するスペースが横に並んでいる配列なんだ!
GameMakerStudioでは、2次元配列という縦が追加された配列を使うことができるよ!
2次元配列を宣言するときは、以下のように記述するよ!
1 |
array[0,0] = "gorilla"; |
つまり、この例では画像の一番左上部分に当たる”A”の値を、gorillaに置き換えているんだ!
(画像の配列が事前に宣言されていたとして)
さっきのRPGゲームの例で、2次元配列を使った場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//1つ1つの武器を列で表します //武器の情報を行で表します weapon[0,0] = "ゴリラの剣"; weapon[0,1] = 30; weapon[0,2] = "ゴリラ用の剣"; weapon[1,0] = "氷の剣"; weapon[1,1] = 20; weapon[1,2] = "いわゆるつらら"; weapon[2,0] = "こん棒"; weapon[2,1] = 3; weapon[2,2] = "落ちてた棒"; show_debug_message(weapon[0,0]); show_debug_message("ダメージ量"+string(weapon[0][1])); show_debug_message(weapon[0][2]); |
こんな風に、配列1つで武器のデータを管理することが出来るようになったよ!
二次元配列をうまく使いこなすことができれば、沢山の時間を節約することができるんだ!
まとめ
お疲れ様!これで配列についての説明はおしまいだよ!
配列を使うことで、沢山の変数を管理することが出来るようになり、
ゲーム開発を円滑に進めることが出来るようになるから、しっかりマスターしておこう!
この記事を通して、少しでも皆が新しいことを学ぶことができたら嬉しいな(*’▽’)
質問があればいつでも@hellomanakiで待ってるよ!
また次の記事で会えることを楽しみにしているよ!

最近このサイトを見つけて記事を全て読ませてもらいました
非常に有益で面白いので更新楽しみにしています
私もUndertaleでGMSを使い始め、海外の動画を見て勉強しています
同じような仲間がいて嬉しいです
応援しています
ありがとうございます!初めて応援コメントを頂いたので物凄く嬉しいです(*’▽’)
初心者の人に分かりやすく、楽しい文章が書けるようにこれからも頑張ります!
Undertale本当に素晴らしいゲームですよね、Deltaruneの続編も楽しみです(*゚▽゚*)
既にご存知かとは思いますが、HeartBeast、Shaun Spalanding, FriendlyCosmonautさん達のチュートリアルがお勧めですよ!
アドバイスありがとうございます
プログラミング初心者で、最近までPythonの基礎を勉強していました
GMSの使い方もよくわかっていないので参考にさせてもらいます
おお!良いですね!GameMakerLanguageの文法はpythonに近いところがあるのですんなり理解できると思いますよ(*’▽’)
こんにちはいつも記事を見させていただいています。本社さんにフォローされてるってすごいですね おめでとうございます!
頑張って下さい!!
いつもありがとうございます!たまため本社さんの目に留まったみたいで運が良かったです(*’▽’)
すみません 僕も「ゲーム好き」さんと同じで、pythonの勉強をしているのですが、pythonならpython IDLEでコードを打ち、実行すると思うんですが、GMLで、
weapon[0] = “ゴリラの剣”
damage[0] = 30;
text[0] = “ゴリラ向けの剣”;
show_debug_message(weapon[0]);
show_debug_message(“ダメージ量”+string(damage[0]));
show_debug_message(text[0]);
などと打ってみて、実際にどのように画面に表示されるかなどを確認するためにはobjectにコードを打って実行すればいいんですか?もしobjectに打てばいいのなら、EVENTはCREATEでいいのですか?
質問ありがとうございます!
基本的に、どのイベント内で宣言しても問題はないのですが、それぞれイベントが呼び出される条件があります!
StepEventの場合は毎フレーム、Create Eventの場合はインスタンスが生成された時などですね!
値を確認したいだけの場合は、確実に一度のみ表示されるCreateEventで良いと思います!
今回の配列の流れとしては
テスト用のオブジェクトを作成 → Create Event内で配列を宣言 → 配列を宣言した後にshow_debug_message関数で値を確認
といった感じになります!
変数値の確認方法について記事内であまりふれていなかったので、後日また一つの記事として書きますね!
ありがとうございます!!早速試してみます!
はい(*’▽’)