以下是用于在 GDScript 中访问 Action Game Maker 类的 API 列表。
ObjectVariable/Switch 和 ProjectVariable/Switch API
访问对象变量(VariableSettings 节点)
获取变量数据:$VariableSettings.get_value("VariableDataName")
设置变量数据:$VariableSettings.set_value("VariableName", Value)
检查变量数据是否存在:$VariableSettings.has_value("VariableDataName")
获取 VariableSettings 节点:$GameObject.get_variable_settings()
访问对象开关(SwitchSettings 节点)
获取开关数据:$SwitchSettings.get_value("SwitchDataName")
设置开关数据:$SwitchSettings.set_value("SwitchName", True / False)
检查开关数据是否存在:$SwitchSettings.has_value("SwitchDataName")
获取 SwitchSettings 节点:$GameObject.get_switch_settings()
只读对象变量/开关
以下 ACTION GAME MAKER 变量/开关为只读值,无法通过方法修改。
开关:
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")
通过记录索引获取项目变量:get_project_database_variable_by_idx
设置项目数据库变量:AGMakerManager.update_project_database_variable("VariableName", variable)
通过记录索引设置项目变量:AGMakerManager.update_project_database_variable_by_idx
获取项目变量记录总数:AGMakerManager.get_project_database_variable_record_max
访问项目开关
获取项目开关:AGMakerManager.get_project_database_switch("record_name")
设置项目数据库开关:AGMakerManager.update_project_database_switch("SwitchName", True / False)
通过记录索引获取项目开关:AGMakerManager.get_project_database_switch_by_idx
通过记录索引设置项目开关:AGMakerManager.update_project_database_switch_by_idx
获取项目开关记录总数:AGMakerManager.get_project_database_switch_record_max
数据库 API
访问用户数据库
获取用户数据库:AGMakerManager.get_project_database_plain("database_name", "record_name", "column_name")
通过记录索引获取用户数据库:get_project_database_plain_by_idx
设置用户数据库变量:AGMakerManager.update_project_database_plain("DatabaseName", "RecordName", "ColumnName", variable)
通过记录索引设置用户数据库变量:AGMakerManager.update_project_database_plain_by_idx
获取用户数据库记录总数:AGMakerManager.get_project_database_plain_record_max
访问其他数据库
获取声音数据库:AGMakerManager.get_project_database_sound("record_name", "column_name")
通过记录索引获取数据的方法
装备类型:AGMakerManager.get_project_database_equipment_type_by_idx
属性类型:AGMakerManager.get_project_database_attribute_type_by_idx
用户自定义类型:AGMakerManager.get_project_database_custom_type_by_idx
音频数据库:AGMakerManager.get_project_database_sound_by_idx
获取记录总数的方法
装备类型:AGMakerManager.get_project_database_equipment_type_record_max
属性类型:AGMakerManager.get_project_database_attribute_type_record_max
用户自定义类型:AGMakerManager.get_project_database_custom_type_record_max
音频数据库:AGMakerManager.get_project_database_sound_record_max
相机 API
生成 CameraTargetSettings
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)
将 CameraTargetSettings 注册到 ZoomCamera2D
$ZoomCamera2D.regist_target(camera_target_settings.get_instance_id())
从 ZoomCamera2D 注销 CameraTargetSettings
$ZoomCamera2D.unregist_target(camera_target_settings.get_instance_id())
FaceDirectionSettings API
set_face_direction(angle, flip_flag):第一个参数:朝向角度,第二个参数:是否翻转get_face_direction():返回当前的朝向角度
其他 AGMakerManager 方法
将 GDScript 生成的游戏对象注册到 AGMakerManager
AGMakerManager.regist_game_object("TargetNode")
- AGMakerManager 是管理 ACTION GAME MAKER 各个方面的系统。由于它也负责追踪 GameObject 的生命周期,因此任何在 AGMakerManager 外部创建的对象都必须手动注册到该系统中。
场景切换
get_current_game_scene()
- 返回当前运行的 GameScene。返回类型为 GameScene。
示例代码:
func _ready() -> void:
var game_scene = AGMakerManager.get_current_game_scene()
print("*** 获取当前场景 = ", game_scene.name)
pass
信号
本节列出了 ACTION GAME MAKER 中各种操作期间发出的信号。
GameObject
保存/加载信号
执行保存时:on_saved(int slot, Object object)
执行加载时:on_loaded(int slot, Object object)
AGMakerManager
保存/加载信号
执行保存时:on_saved(int slot)
执行加载时:on_loaded(int slot)
场景切换相关信号
game_scene_about_to_change(current: Object)
此信号在场景切换执行之前发出。
参数 current 接收切换前的 GameScene。
game_scene_changed(current: Object)
此信号在场景切换完成后发出。
参数 current 接收切换后的 GameScene。
注意:由于 Godot 的规范,参数类型为 Object。
在使用时,请在用户端将其转换为 GameScene 或 Node2D。
示例代码:
func _ready() -> void:
# 连接到场景切换前发出的信号
AGMakerManager.game_scene_about_to_change.connect(_on_before_change_scene)
# 连接到场景切换后发出的信号
AGMakerManager.game_scene_changed.connect(_on_after_change_scene)
pass
func _on_before_change_scene(current_scene: GameScene):
print("*** 场景切换前 = ", current_scene.name)
pass
func _on_after_change_scene(current_scene: GameScene):
print("*** 场景切换后 = ", current_scene.name)
pass