# マニュアル：手法/シグナル/API一覧

**URL:** <https://guild.rpgmakerofficial.com/t/topic/35>\
**Category:** チュートリアル\
**Tags:** マニュアル\
**Created:** [2025 年 5 月 20 日午前 7:30 UTC](https://guild.rpgmakerofficial.com/t/topic/35 "2025-05-20T07:30:20Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![GGG-Administrator](https://sea2.discourse-cdn.com/flex002/user_avatar/guild.rpgmakerofficial.com/ggg-administrator/32/6_2.png) [@GGG-Administrator](https://guild.rpgmakerofficial.com/u/GGG-Administrator)\
**Post date:** [2025 年 5 月 20 日午前 7:30 UTC](https://guild.rpgmakerofficial.com/t/topic/35/1 "2025-05-20T07:30:20Z")

</div>

以下は、GDScript から **ACTION GAME MAKER** のクラスにアクセスするために使用される API のリストです。

これらはすべて ClassDB に登録されているため、記載されている通りに GDScript から呼び出すことができます。ここにリストされていないものは内部実装であり、公開 API の一部ではありません。

* * *

# オブジェクト変数/スイッチおよびプロジェクト変数/スイッチ API

## オブジェクト変数へのアクセス (VariableSettings ノード)

| 目的 | 呼び出し |
| --- | --- |
| 変数データを取得 | `$VariableSettings.get_value("VariableName")` |
| 変数データを設定 | `$VariableSettings.set_value("VariableName", value)` |
| 変更シグナルを発行せずに設定 | `$VariableSettings.set_value("VariableName", value, false)` |
| 変数が存在するか確認 | `$VariableSettings.has_value("VariableName")` |
| VariableSettings ノードを取得 | `game_object.get_variable_settings()` |

`set_value` の第3引数 (`is_emit_changed_signal`) はデフォルトで `true` です。毎フレーム値を書き込み、毎回変更通知を発行したくない場合は `false` を渡してください。

_シグナル:_ `apply_value(variable_name: String, value)` — 値が適用されたときに発行されます。

## オブジェクトスイッチへのアクセス (SwitchSettings ノード)

| 目的 | 呼び出し |
| --- | --- |
| スイッチデータを取得 | `$SwitchSettings.get_value("SwitchName")` |
| スイッチデータを設定 | `$SwitchSettings.set_value("SwitchName", true)` |
| スイッチが存在するか確認 | `$SwitchSettings.has_value("SwitchName")` |
| SwitchSettings ノードを取得 | `game_object.get_switch_settings()` |

_シグナル:_ `apply_value(switch_name: String, value: bool)`

### 読み取り専用のオブジェクト変数/スイッチ

以下の組み込み変数/スイッチは読み取り専用であり、これらのメソッドを通じて変更することはできません。

スイッチ:  
`is_locked`, `is_touching_portal`

変数:  
`object_id`, `stayed_area_id`, `visible_direction`, `x_speed`, `y_speed`, `player_id`, `controller_id`, `taken_damage`

## プロジェクト変数へのアクセス

| 目的 | 呼び出し |
| --- | --- |
| レコード名で取得 | `AGMakerManager.get_project_database_variable("record_name")` |
| レコードインデックスで取得 | `AGMakerManager.get_project_database_variable_by_idx(record_idx)` |
| レコード名で設定 | `AGMakerManager.update_project_database_variable("record_name", value)` |
| レコードインデックスで設定 | `AGMakerManager.update_project_database_variable_by_idx(record_idx, value)` |
| レコード数を取得 | `AGMakerManager.get_project_database_variable_record_max()` |

## プロジェクトスイッチへのアクセス

| 目的 | 呼び出し |
| --- | --- |
| レコード名で取得 | `AGMakerManager.get_project_database_switch("record_name")` |
| レコードインデックスで取得 | `AGMakerManager.get_project_database_switch_by_idx(record_idx)` |
| レコード名で設定 | `AGMakerManager.update_project_database_switch("record_name", true)` |
| レコードインデックスで設定 | `AGMakerManager.update_project_database_switch_by_idx(record_idx, true)` |
| レコード数を取得 | `AGMakerManager.get_project_database_switch_record_max()` |

_シグナル (AGMakerManager):_  
`notify_database_variable_value_changed(record_name: String, value: float)`  
`notify_database_switch_value_changed(record_name: String, value: float)`

* * *

# データベース API

## ユーザーデータベースへのアクセス

| 目的 | 呼び出し |
| --- | --- |
| 取得 | `AGMakerManager.get_project_database_plain("section_name", "record_name", "column_name")` |
| レコードインデックスで取得 | `AGMakerManager.get_project_database_plain_by_idx("section_name", record_idx, "column_name")` |
| 設定 | `AGMakerManager.update_project_database_plain("section_name", "record_name", "column_name", value)` |
| レコードインデックスで設定 | `AGMakerManager.update_project_database_plain_by_idx("section_name", record_idx, "column_name", value)` |
| レコード数を取得 | `AGMakerManager.get_project_database_plain_record_max("section_name")` |

第1引数はファイル名ではなく、 **セクション名** （ユーザーデータベースの名前）です。

## オブジェクトとしてユーザーデータベースにアクセス (AgmUserDatabase / AgmUserDatabaseRecord)

毎回の呼び出しでセクション、レコード、カラム名を渡す代わりに、ユーザーデータベースをオブジェクトとして取得し、レコードを直接操作することができます。名前の検索はハッシュテーブルを通じて行われるため、レコード数が多くても高速に動作します。

### 🔹 ユーザーデータベースの取得 (AGMakerManager)

| 目的 | 呼び出し |
| --- | --- |
| すべてのユーザーデータベースを取得 | `AGMakerManager.get_user_databases()` |
| ユーザーデータベースが存在するか確認 | `AGMakerManager.has_user_database("database_name")` |
| ユーザーデータベースを取得 | `AGMakerManager.get_user_database("database_name")` |

- 引数はユーザーデータベースの名前（上記のセクション名と同じ）です。
- `get_user_database` は、その名前のユーザーデータベースが存在しない場合 `null` を返します。
- `get_user_databases()` の順序は保証されません。
- ユーザーデータベースはゲーム実行中のみ利用可能です。エディター内（例えば `@tool` スクリプトから）では、`get_user_database` は `null` を返します。

### 🔹 AgmUserDatabase

| 目的 | 呼び出し |
| --- | --- |
| ユーザーデータベースの名前 | `database.get_name()` |
| すべてのレコードを取得 | `database.get_records()` |
| レコードが存在するか確認 | `database.has_record("record_name")` |
| レコードを取得 | `database.get_record("record_name")` |
| プレイ中に値を変更できるか | `database.is_changeable()` |
| 値がセーブデータに保存されるか | `database.is_savable()` |

- `get_records()` は、データベースエディターで定義された順序でレコードを返します。
- `get_record` は、その名前のレコードが存在しない場合 `null` を返します。

### 🔹 AgmUserDatabaseRecord

| 目的 | 呼び出し |
| --- | --- |
| レコードの名前 | `record.get_name()` |
| すべてのカラム名を取得 | `record.get_column_names()` |
| カラムが存在するか確認 | `record.has_column("column_name")` |
| カラムの値を取得 | `record.get_column_value("column_name")` |
| カラムの値を設定 | `record.set_column_value("column_name", value)` |
| このレコードが属するユーザーデータベース | `record.get_user_database()` |

- `get_column_names()` は、データベースエディターで定義された順序でカラムを返します。
- `get_column_value` は、その名前のカラムが存在しない場合 `null` を返します。
- `set_column_value` は成功時に `true` を返します。カラムが存在しない場合、またはユーザーデータベースが変更不可能な場合 (`is_changeable()` が `false`) は、何も変更せずに `false` を返します。
- `set_column_value` は、データベースエディターで設定されたカラム型に対して値の型をチェックしません。正しい型の値を渡してください。
- ここで読み書きされる値は、`get_project_database_plain` / `update_project_database_plain` およびビジュアルスクリプトが使用する値と同じです。ユーザーデータベースがセーブ可能な場合、変更はセーブデータに保存されます。
- いずれのクラスも `new()` で作成することはできません。必ず `AGMakerManager` 経由で取得してください。

_サンプルコード:_

```gdscript
func _ready() -> void:
	var items := AGMakerManager.get_user_database("Items")
	if items == null:
		return

	# すべてのレコードとそのカラムをリスト表示
	for record in items.get_records():
		for column in record.get_column_names():
			print(record.get_name(), ".", column, " = ", record.get_column_value(column))

	# 1つの値を変更
	var potion := items.get_record("Potion")
	if potion != null and potion.has_column("Price"):
		if not potion.set_column_value("Price", 120):
			print("Items cannot be changed during play")

```

## その他のデータベースへのアクセス

### 🔹 レコード名で取得

| データベース | 呼び出し |
| --- | --- |
| 装備タイプ | `AGMakerManager.get_project_database_equipment_type("record_name")` |
| 属性タイプ | `AGMakerManager.get_project_database_attribute_type("record_name")` |
| ユーザー定義タイプ | `AGMakerManager.get_project_database_custom_type("section_name", "record_name")` |
| オーディオデータベース | `AGMakerManager.get_project_database_sound("record_name", "column_name")` |

### 🔹 レコードインデックスで取得

| データベース | 呼び出し |
| --- | --- |
| 装備タイプ | `AGMakerManager.get_project_database_equipment_type_by_idx(record_idx)` |
| 属性タイプ | `AGMakerManager.get_project_database_attribute_type_by_idx(record_idx)` |
| ユーザー定義タイプ | `AGMakerManager.get_project_database_custom_type_by_idx("section_name", record_idx)` |
| オーディオデータベース | `AGMakerManager.get_project_database_sound_by_idx(record_idx, "column_name")` |

### 🔹 レコード数の取得

| データベース | 呼び出し |
| --- | --- |
| 装備タイプ | `AGMakerManager.get_project_database_equipment_type_record_max()` |
| 属性タイプ | `AGMakerManager.get_project_database_attribute_type_record_max()` |
| ユーザー定義タイプ | `AGMakerManager.get_project_database_custom_type_record_max("section_name")` |
| オーディオデータベース | `AGMakerManager.get_project_database_sound_record_max()` |

* * *

# 共有ボード (Blackboard) API

キーは、[変数/スイッチの設定] ウィンドウの **[Blackboard]** タブで事前に定義する必要があります。これらのメソッドはそのキーの読み書きを行います。

| 目的 | 呼び出し |
| --- | --- |
| キーが存在するか確認 | `AGMakerManager.has_blackboard_key("KeyName")` |
| 共有値を取得 | `AGMakerManager.get_blackboard_value("KeyName", default_value)` |
| 共有値を設定 | `AGMakerManager.set_blackboard_value("KeyName", value)` |
| すべての値を初期値にリセット | `AGMakerManager.reset_blackboard_values()` |
| オブジェクトごとの値を取得 | `AGMakerManager.get_object_blackboard_value(instance_id, "KeyName", default_value)` |
| オブジェクトごとの値を設定 | `AGMakerManager.set_object_blackboard_value(instance_id, "KeyName", value)` |

`default_value` は省略可能で、デフォルトは `null` です。

スコープが **[Per Object]** のキーには、`..._object_blackboard_value` ペアを使用し、対象オブジェクトの `get_instance_id()` を渡してください。

_サンプルコード:_

```gdscript
func _ready() -> void:
	if AGMakerManager.has_blackboard_key("BossDefeated"):
		AGMakerManager.set_blackboard_value("BossDefeated", true)

	# オブジェクトごとのキー
	AGMakerManager.set_object_blackboard_value(get_instance_id(), "MyTarget", null)

```

* * *

# セーブ/ロードおよびクイックリスタート API

| 目的 | 呼び出し |
| --- | --- |
| スロットにセーブ | `AGMakerManager.save_game_data(slot_idx, owner)` |
| スロットからロード | `AGMakerManager.load_game_data(slot_idx, include_project_variable, include_project_switch, include_saved_scene, include_object_status, include_layer_active_state, transition_type, transition_duration)` |
| オートセーブにセーブ | `AGMakerManager.save_auto_game_data(owner)` |
| オートセーブをロード | `AGMakerManager.load_auto_game_data(include_project_variable, include_project_switch, include_saved_scene, include_object_status, include_layer_active_state, transition_type, transition_duration)` |
| オートセーブが存在するか確認 | `AGMakerManager.exists_auto_game_data()` |
| オートセーブを削除 | `AGMakerManager.delete_auto_game_data()` |
| クイックリスタート | `AGMakerManager.quick_restart(restart_type, bgm_type, self_state_type, clear_flags, transition_type, transition_duration, restart_layer, restart_action, owner)` |

- `slot_idx` は **0** から始まります。
- `owner` は操作を実行するオブジェクトです（ゲームオブジェクト上のノードからは `self` を渡します）。
- `transition_type` は、シーン遷移の画面効果と同じ値を取ります (`0 = NONE`, `1 = BLACK`, `2 = WHITE`、その後スライド系バリエーション)。
- `quick_restart` の引数は「QuickRestart」アクションの設定に一致します:
  - `restart_type`: `0` = シーン全体をオートセーブポイントまで巻き戻す, `1` = シーンを保持し自分自身のみをオートセーブポイントに戻す, `2` = シーンを保持し、最後に立っていた地面に戻す。
  - `bgm_type`: `0` = 保存時と同じ BGM ならそれを保持, `1` = 常にセーブされた BGM を最初から再起動。
  - `self_state_type`: `restart_type` が `1` または `2` の場合にのみ使用されます。`0` = 自身の状態（HP、オブジェクト変数/スイッチ、アクションなど）をオートセーブポイントまで復元, `1` = 現在の状態を保持し、位置と向きのみを復元。
  - `clear_flags`: クリアするものを加算して指定 — `1` = 弾パターン, `2` = エフェクトとパーティクル, `4` = オートセーブポイントに存在しなかったオブジェクト, `8` = リバイブリスト。`0` は何もクリアしません。
  - `transition_type` / `transition_duration`: 画面効果とその継続時間で、別のシーンからオートセーブポイントに戻る際に使用されます。`load_game_data` と同じ値です。
  - `restart_layer` / `restart_action`: 戻った後に開始する状態。`restart_layer` はレイヤー（`0` がメインレイヤー）、`restart_action` は状態です。`restart_action` を指定しない場合は `-1` を渡します。

_シグナル (AGMakerManager):_  
`on_saved(slot_idx: int)` / `on_loaded(slot_idx: int)`

_シグナル (GameObject):_  
`on_saved(slot: int, object: Object)` / `on_loaded(slot: int, object: Object)`

* * *

# カメラ API

## 🔹 CameraTargetSettings の生成

```gdscript
var camera_target_settings = CameraTargetSettings.new()
camera_target_settings._target_id = "Any ID"
camera_target_settings._is_active_target = true
camera_target_settings._visible_size = Vector2(100, 100)
add_child(camera_target_settings)
camera_target_settings.position = Vector2(100, 100)

```

## 🔹 ZoomCamera2D への CameraTargetSettings の登録

`$ZoomCamera2D.regist_target(camera_target_settings.get_instance_id())`

## 🔹 ZoomCamera2D からの CameraTargetSettings の解除

`$ZoomCamera2D.unregist_target(camera_target_settings.get_instance_id())`

## 🔹 その他の ZoomCamera2D メソッド

`get_target_ids()` / `set_target_ids(value)`, `get_move_enabled()` / `set_move_enabled(value)`, `get_zoom_enabled()` / `set_zoom_enabled(value)`, `get_min_zoom()` / `set_min_zoom(value)`, `get_max_zoom()` / `set_max_zoom(value)`

* * *

# FaceDirectionSettings API

- `set_face_direction(face_direction, is_opposite = false)`: 第1引数は向いている方向の角度、第2引数は反転するかどうかです。第2引数は省略可能です。
- `get_face_direction()`: 現在の向いている方向の角度を返します。
- `set_target_node(target_node)`: 向くノードを設定します。

_シグナル:_ `set_face_direction(face_direction: float, is_opposite: bool)`  
シグナルはメソッドと同じ名前であることに注意してください。接続するには `face_direction_settings.set_face_direction.connect(...)` とします。

* * *

# GameObject メソッド

## 🔹 設定ノードの取得

GameObject は、所有する各設定ノードに対するゲッターを公開しています。ノードが存在しない場合は `null` を返します。

`get_base_settings()`, `get_variable_settings()`, `get_switch_settings()`, `get_move_and_jump_settings()`, `get_child_settings()`, `get_on_remove_settings()`, `get_bullets_settings()`, `get_taken_damage_settings()`, `get_damage_display_settings()`, `get_after_image_settings()`, `get_change_angle_settings()`, `get_invincible_settings()`, `get_camera_target_settings()`, `get_bind_objects()`, `get_face_direction_settings()`

## 🔹 ステートと識別情報

`get_internal_object_id()`, `get_display_direction()`, `get_face_direction()`, `get_face_direction_from_settings()`, `is_operated_controller()`, `is_savable()`, `get_enable_tile_effect()`, `get_initial_action_id()`, `get_revive_action_id()`, `get_animation_player_node()`, `get_apply_animation()`

## 🔹 向きの変更

- `change_face_direction(type, is_absolute, direction = 0)`
- `easing_face_direction(curve, duration, type, is_absolute, direction = 0)`

## 🔹 シグナル

- `send_signal(signal_name: String, value)` — 「シグナルを送る」アクションによって発行されます。メニューボタンが押されたことをビジュアルスクリプトに伝える際に使用します。
- `enable_tile_effect_changed(is_enable: bool)`
- `on_saved(slot: int, object: Object)` / `on_loaded(slot: int, object: Object)`

* * *

# GameScene メソッド

`get_camera_list()`, `get_gravity()`, `get_gravity_direction()`, `get_audio_data_id()`, `get_loop_type()`, `is_played_previous_bgm()`

* * *

# オブジェクトプール (GameObjectPools) API

プールからオブジェクトを取り出すことや返すことはエンジンによって処理されるため、それ用の API はありません。GDScript でできるのはプールの設定と状態の読み取りです。詳細は「GDScript から GameObjectPools を設定する」マニュアルを参照してください。

| 目的 | 呼び出し |
| --- | --- |
| プールリストを設定 | `pools.set_pool_data_list(list)` |
| プールリストを取得 | `pools.get_pool_data_list()` |
| 1つのシーンに対する休眠数 | `pools.get_dormant_count("res://objects/bullet.tscn")` |
| ツリー内のすべてのプールの状態 | `GameObjectPools.get_all_pool_status_list()` **(static)** |
| プリウェームの進捗状況 | `GameObjectPools.get_all_prewarm_count()` **(static)** |
| プリウェームが完了したか | `GameObjectPools.is_all_prewarm_finished()` **(static)** |

3つの静的メソッドはノード参照を必要としないため、デバッグ表示に便利です。

_シグナル:_ `prewarm_finished` — ノードが処理するプリウェームが完了したときに1回発行されます。

* * *

# LoadingScene API

読み込み画面のルートノードが `LoadingScene` の場合に利用可能です。

| 目的 | 呼び出し |
| --- | --- |
| 0.0 から 1.0 の進捗率 | `get_progress_ratio()` |
| ロードが開始されたか | `is_load_started()` |
| ロードが完了したか | `is_load_finished()` |

_シグナル:_ `progress_updated(progress: float)`, `load_started`, `load_finished`

別途、ルートノードのスクリプトに `set_progress(ratio)` という名前のメソッドを実装した場合、エンジンが自動的にプログレスバーを更新する代わりにそのメソッドを呼び出します。これはバインドされた API ではなく、エンジンが名前で検索するメソッドです。

* * *

# その他の AGMakerManager メソッド

### 🔹 GDScript で作成されたゲームオブジェクトを AGMakerManager に登録

`AGMakerManager.regist_game_object(target_node)`

- AGMakerManager は ACTION GAME MAKER のさまざまな側面を管理するシステムです。GameObject のライフサイクルも追跡するため、AGMakerManager 外部で生成されたオブジェクトは手動で登録する必要があります。
- パスではなく、 **ノード自体** を渡してください。引数の型は `Node2D` です。
- 対応する解除メソッドは GDScript に公開されていません。オブジェクトが解放されると自動的に解除されます。

### 🔹 シーン遷移

`get_current_game_scene()`

- 現在実行中の GameScene を返します。戻り値の型は **GameScene** です。

_サンプルコード:_

```gdscript
func _ready() -> void:
	var game_scene = AGMakerManager.get_current_game_scene()
	print("*** get current scene = ", game_scene.name)

```

* * *

# シグナル

このセクションでは、ACTION GAME MAKER の各種操作中に発行されるシグナルをリストします。

### 🔹 GameObject

_セーブ/ロード シグナル_

セーブ実行時: `on_saved(slot: int, object: Object)`  
ロード実行時: `on_loaded(slot: int, object: Object)`

_その他_

`send_signal(signal_name: String, value)`  
`enable_tile_effect_changed(is_enable: bool)`

* * *

### 🔹 AGMakerManager

_セーブ/ロード シグナル_

セーブ実行時: `on_saved(slot_idx: int)`  
ロード実行時: `on_loaded(slot_idx: int)`

_データベース変更シグナル_

`notify_database_variable_value_changed(record_name: String, value: float)`  
`notify_database_switch_value_changed(record_name: String, value: float)`

_シーン遷移関連シグナル_

**`game_scene_about_to_change(current: Object)`**  
このシグナルは、シーン遷移が実行される **直前** に発行されます。  
パラメータ `current` には、遷移 **前** の **GameScene** が受け取られます。

**`game_scene_changed(current: Object)`**  
このシグナルは、シーン遷移が完了した **後** に発行されます。  
パラメータ `current` には、遷移 **後** の **GameScene** が受け取られます。

_注意:_ パラメータの型は Godot の仕様により `Object` です。  
使用時にはユーザー側で `GameScene` または `Node2D` にキャストしてください。

_サンプルコード:_

```gdscript
func _ready() -> void:
	# シーン遷移前に発行されるシグナルに接続
	AGMakerManager.game_scene_about_to_change.connect(_on_before_change_scene)
	# シーン遷移後に発行されるシグナルに接続
	AGMakerManager.game_scene_changed.connect(_on_after_change_scene)

func _on_before_change_scene(current_scene: GameScene):
	print("*** on before change scene = ", current_scene.name)

func _on_after_change_scene(current_scene: GameScene):
	print("*** on after change scene = ", current_scene.name)

```

* * *

### 🔹 VariableSettings / SwitchSettings

`apply_value(variable_name: String, value)` / `apply_value(switch_name: String, value: bool)`

### 🔹 FaceDirectionSettings

`set_face_direction(face_direction: float, is_opposite: bool)`

### 🔹 GameObjectPools

`prewarm_finished`

### 🔹 LoadingScene

`progress_updated(progress: float)`, `load_started`, `load_finished`
