GM:Studio の Alarmってなんやこれ


GM:Studio には単なる一次元配列なんだけど Built-In として alarm という配列が用意されている。

説明書をよく読まないでリファンレンスだけ見て存在を知って、一次元配列ならこんな使い方だろってノリで使っていたのだけど、どうもおかしい。イベント作ってアクション足しても機能してる気配が無いし、値を与えると Steps で勝手に減算されている。

なにこれ変態?と思い、仕方が無いのでマニュアルを読んだら、やはり単なる一次元配列ではなく機能性の割り当てがある配列だった。

使い方としては最初に値を入れる、次に Alarm イベントを作成してアクションはコメントで良いから追加する。このアクション+イベントはコメントでいいから追加しろ的なやりかた好きじゃないのだけど、GM:Studio にはこの手の手法がなぜか他機能でもある。Box2D 使う時の衝突判定の親子処理も同じようなやり方。

すると値が 0 以上の場合、alarm は勝手に毎 step 減算(デクリメント)される。つまり値を与えれば 0 になるまで自動的に減算される機能であり、これをタイマー的に利用するから Alarm という名称を与えているっぽい。便利は便利だけど配列である必要が無い気がするんやで。

関数に与える引数の識別子が argument0~15で固定されているように、alarm も alarm0~11 で識別子として固定してくれてもいいような??……でもそうすると繰り返し処理で困ることに気がつく。

var i=0;
repeat 11 {alarm[i]=500; i++; };
これができるのが強みかな。
でも無ければ無いで困らないし、変数でなんとかできるから使わない人は使わないのだと思う。Built-In はせっかく用意されているのでなるべく使うようにしているから、alarm も使うけど。

要するに alarm は 0 以上の値が代入されている時は自動減算、0 になった時実行して欲しいアクションをコードで書き込むことで実行される時限爆弾(タイマー)的に利用できるみたい。自分で関数作らなくて良いから便利は便利かなぁ。

まだタイムラインもよく分かってないし、まだまだ使いこなせてない。


Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です