環境 : Gamemaker Studio 2 (platform : HTML5)
結論 : argument0 必須の引数。argument[0] 任意の引数のとき。
こんばんは。Aki @aki_0o0_です。スクリプトで関数を定義した時に、引数を受取る書き方が2種類あったので、なにが違うのか調べました。
違い
argument[0]
値を渡し忘れたら、実行するまでエラーにならない。ので気づくのが遅れる。
例えば、こういう関数を用意します。
///@param posx
///@param posy
///@param num
var posx = argument[0];
var posy = argument[1];
var num = argument[2];
draw_score_optional(x, y, 999);
こう呼ぶとするとき、
draw_score_optional();
引数を書き忘れても、
特に何も表示されずに、コンパイルも通って、
実際その処理の呼び出しが実行されるまでエラーにならないんですね。
argument0
値を渡し忘れたら、エディタで書きながらエラーが表示されるので、分かりやすい。
そのままコンパイルすると、コンパイルエラーにしてくれる。親切!
例えば、
///@param posx
///@param posy
///@param num
var posx = argument0;
var posy = argument1;
var num = argument2;
draw_score_required(x, y, 999);
こう呼ぶとするとき、
draw_score_required();
引数を書き忘れたら、エディタで赤くなるからすぐわかる。
もしそのままコンパイルしても、エラーになって修正するまでは実行されないから、すぐに気づけますね。
デフォルト引数を使って省略できる
じゃあこっち(argument[0])は要らない子なのかというと、そんなこと無いです
どんな時に使うかというと、デフォルト引数を使いたい時です。
///@param posx
///@param posy
///@param num
///@param color
var posx = argument[0];
var posy = argument[1];
var num = argument[2];
var color = c_white;
if (argument_count >= 4) {
color = argument[3];
}
draw_score_default_argument(x, y, 999);
白色で良い時、
draw_score_default_argument(x, y, 999, c_red);
色を指定したい時
終わり
というわけで、
必須の引数は、argument0
任意の引数は、argument[0]
を使うと良いと思います