GameMaker Studio 2の覚え書き

全部公式のヘルプに書いてありますが、
GameMaker Studio 2(GMS2)を使っていて、
個人的にこういう風に理解したつもりという忘れないためのメモ


文字列からスプライトやオブジェクトを読み込む

spr_name = asset_get_index("spr_syuzinko");

spr_nameに"spr_syuzinko"という文字列のスプライトインデックスが代入される

コードを書いてるとき、ただspr_syuzinkoって書くと表示は文字列ぽく見えるけれど
実際の中身はスプライトのインデックス(数字)なので、
文字列を使ってスプライト・オブジェクトなどを読み込みたい場合はこれを使う

作ったメッセージ表示システムは、
テキストに表示させる顔グラを書いて設定するように作ったので、最初これを知らなくて困った

スクリプトを呼び出したい

スクリプト名();

re = Mssage_script("あいうえお~");

Mssage_scriptというスクリプトを呼び出す
()の中にはスクリプトのコードで設定した引数を書く

↓引数の設定 スクリプトのコードにコメントで書く

/// @desc Mes(messge);
/// @arg message

ちなみにreにはMssage_scriptのreturnで渡された数値が代入される
スクリプトはreturnで終了してしまうのでそれ以降のコードは実行されない

return argument1;

script_execute(script, argument0...*)

script_name = Message_script;
arg = "あいうえお~";
script_execute(script_name, arg);

Message_scriptという名前のスクリプトが呼び出される
二つ目以降には設定した引数を書く

変数

hoge = true;

createイベントで定義しておいて使うことができる
同じインスタンス内ならDraw,Stepどのイベントからでも使える
インスタンスがdestroyなどで破棄された時に破棄

var piyo = 123;

一時的な変数
定義されたコード内でのみ使える
コードが一周する度に破棄

global.moge = "hoge~";

別のオブジェクト・スクリプトどこからでも使える変数
定義された時からゲーム起動中はずっと残ってる
ゲームを終了・リセットすると破棄されてると思う

sprite object instance

スプライト sprite

キャラクターの画像やメッセージウィンドウやカーソルとかゲーム中に使う画像
アニメーションのフレーム、当たり判定の元になるマスクとかも設定できる

オブジェクト object

コードなどを書いておくことができるもの マップに置かないと処理が始まらない
オブジェクトに使うスプライト、どのマスクを使うかなど設定できる
通常はマップが変わると元のマップにあったオブジェクトは破棄されて処理が止まるけど、
マップをまたいで処理し続ける設定のチェックボックスがある

インスタンス instance

オプジェクトを設置するとした数だけインスタンスが生成される
一意のIDが割り当てられていて、変数も独立している
マップにはインデックスで参照できるインスタンスのリストがある
インスタンスのインデックスを使って個別に変数をいじれる

インスタンスのIDとindex

ID

インスタンスが生成される度に割り振られる一意の数字(100030みたいなのとか)
マップにあるインスタンスの数によって変わるので、同じオブジェクトのインスタンスでも同じになるわけではない
通し番号みたいな感じ

index

インスタンスのリストの番号 インデックス[1]のインスタンスのIDは?とか参照できる

inst_id = instance_id_get(1);

inst_idにindex[1]のインスタンスのIDがに代入される