OnePoint


【ワンポイント!】 便利な使い方、豆知識、簡単なTips等があったらぜひ書き込んでください。



■目次


初心者向け

GameMaker Tips For Beginners

1. 公式ドキュメントを読もう
Google検索したり誰かに質問を投げる前に、まずは ドキュメント を読みましょう。問題の解決になる情報がある可能性があります
2. 理解せずにコピー&ペーストしない
チュートリアルのコードがどのように機能しているのかを理解して使うこと。理解していないコードを修正したり拡張するのは危険で、うまく行ったとしても今後それを応用することはできません
3. 値の異なるだけのオブジェクトを別オブジェクトにしない
同じ種類のオブジェクトでも "Creation Code" で別パラメータを設定できます
4. 衝突イベントよりも place_meeting() を使おう
衝突イベントを使用するよりも place_meeting() を使用する方が衝突処理の条件や衝突後の挙動が細かく記述できます
5. 移動入力判定を賢く書こう
例えば水平方向の移動は "var hsp = keyboard_check(vk_right) - keyboard_check(vk_left);" という記述でシンプルに書けます
6. HUD は Draw GUI イベントで描画しよう
Draw GUIイベントの描画はスクリーン座標系で扱われるので描画座標の指定が容易となります
7. *_create() 関数の仕組みを知ろう
surface_create()ds_list_create() などの関数はユーザが管理するメモリ上に配置されます。そのためこれらの関数を使用し、それらが不要になった場合は surface_free()ds_list_destroy() で明示的に破棄する必要があります
8. サーフェースを生成する場合は初期化しよう
サーフェースを作成する場合には適切に初期化処理を行う必要があります。surface_set_target() でサーフェースを設定し、draw_clear_alpha() でサーフェースのメモリを初期化、使い終わったら、surface_reset_target() でリセットします
9. スクリプトは () をつけないと実行されない
例えば getFive() というスクリプトが存在する場合 "getFive()" と記述すれば正しく実行されますが、"getFive" と書くと単にスクリプトIDを評価しているだけなのでスクリプトは実行されません

GMLのTips

指定桁数を 0埋めする文字列を作りたい

C言語で言う、sprintf() で "%06d" するようなことをしたい場合の実装方法。 string_format()string_replace_all()を使用することで実装可能。

// 123 を "000123" にするサンプルコード
var num = 123; // 0埋めしたい数値
var digit = 6; // 桁数
var s = string_format(num, digit , 0); // 123 を "   123" に変換
s = string_replace_all(s, " ", "0"); 空白文字を "0" に変換。"000123" になる

使いやすいログ出力関数を作る

GameMakerには sprintf() がないので、数値を string() で1つずつ変換する必要があります。 これだとログを出力するのが不便。 そこで以下のようなスクリプトを作るとログ出力が簡単にできます。

// ■スクリプト名を trace とする
var s = "";
for(var i = 0; i < argument_count; i++) {
  s += string(argument[i]); // 引数すべてを文字列として結合する
}

show_debug_message(s);

呼び出し側は以下のように記述します

var i = 123;
var s = "test";
var f = 456.789;

// "123test456.789" という文字を出力する
trace(i, s, f));

GMLエディタの文字サイズ変更

F7キーで文字サイズを小さくする。F8キーで文字サイズを大きくする

文字列検索

  • Ctrl + F:現在の編集中のスクリプトから文字列を検索する
  • Ctrl + Shift + F :すべてのスクリプトから文字列を検索する

定義ジャンプ

  • F1:定義ジャンプ。標準機能であればヘルプファイルを開く

コードの折りたたみ

#region から #endregion の部分は折りたたみが可能になる

文字列を数値に変換したい

整数値であれば int64()、実数値であればreal()で変換することができます


定数を使いたい

#macro というキーワードで定数が作れます。

#macro PLAYER_MOVE_SPEED (5) // プレイヤーの移動速度

この値を使う場合は指定した名前をそのまま使います

speed = PLAYER_MOVE_SPEED;

#macro はコンパイル時に置き換えを行なっているだけなので、文字列や関数を指定することもできます

#macro APP_NAME "GMS2の大冒険" // ゲームタイトル名
#macro IS_PRESS_ACTION keyboard_check_pressed(ord("Z")) // 決定キー

#macro の定義はどのファイルに記述しても良いみたいですが、できるだけ1つのファイルにまとめておいた方が良さそうです。

最初に実行されるルーム

GameMakerでは、Rooms の一番上に存在するルームをゲーム起動直後に実行します。 例えば以下のようにルームが並んでいると "room_title" が一番最初に実行されます。

Rooms
  +-- room_title
  +-- room_game
  +-- room_ending

別のオブジェクトに値を渡す方法

instance_create_depth()などで生成したインスタンスIDに直接値を渡すことができます

// obj_shotを生成
var _inst = instance_create_depth(x, y, 10, obj_shot);
// 上方向に10の速さで移動させる
_inst.speed = 10;
_inst.direction = 90;

9-slice scalingの実装方法

GMS2の知っていると便利な機能


GMS2: FEATURES YOU MIGHT NOT KNOW ABOUT

WORKSPACE NAVIGATION TIPS AND TRICKS

WORKSPACE NAVIGATION TIPS AND TRICKS ワークスペースの移動のショートカットキーをまとめたもの。

  • Ctrl + T:リソース検索 (macOSの場合は Cmd + Tab)
  • Ctrl + Tab:Workspace Overview を表示する (macOSの場合は Option + Tab)
  • Ctrl + Alt + カーソルキー:ウィンドウ間をスクロールする。GMLエディタから Events を見たくなったときに 「Ctrl+Alt+左キー」でスクロールできて便利

ショートカットキー

  • F2:リソースファイル名変更
  • Ctrl + T:リソース検索 (macOSの場合は Cmd + T)
  • Ctrl + Tab:Workspace Overview を表示する (macOSの場合は Option + Tab)
  • F12:Room Editor と Resources の表示・非表示を切り替え












===================================
以下の情報は古いものとなっています
===================================

各ステップでのイベントの優先順位

  1. Begin step events(ステップ開始イベント)
  2. Alarm events(アラームイベント)
  3. Keyboard, Key press, and Key release events(キーボード>キー押しイベント>キー上げイベント)
  4. Mouse events(マウスイベント)
  5. Normal step events(通常ステップイベント) (全てのインスタンスの位置が更新されます)
  6. Collision events(衝突イベント)
  7. End step events(ステップ終了イベント)
  8. Drawing events(描画イベント)

実行時の error に関して

  • Unexpected symbol
    • ソースコードをコピー&ペーストしていた場合、全角空白などが混じっていませんか?

日本語ヘルプファイルについて

ここにVer6.0ですが日本語のヘルプファイルがあります。

こちらにもVer4.2ですが日本語のヘルプファイルがあります。


最新の50件を表示しています。 コメントページを参照

  • motion_set(dir, speed) などに出てくる dir は、0で右。反時計回りに見る。270で下となる。 -- 2007-11-06 (火) 01:11:34
  • Windows7においてゲームを終了したのにプロセスが生き残っている場合はSoundsのなか -- 2010-11-27 (土) 11:05:19
  • 途中で送信してしまったorz •Windows7においてゲームを終了したのにプロセスが生き残っている場合はSoundsリソースに問題があるかもしれません。 -- 2010-11-27 (土) 11:06:37
コメント:

Wiki内検索

#search(): You already view a search box

MENU

ドキュメント

GMLリファレンス

2ch

その他



最新の30件

2020-06-28 2020-06-20 2020-05-27
  • OnePoint
2020-05-12 2020-05-10 2020-05-08 2020-05-07 2020-04-30 2020-04-28 2020-04-27

人気の10件

今日の10件



これまでの訪問者: 16419
今日の訪問者: 6
昨日の訪問者: 7
閲覧者: 5