コンテンツにスキップ

ScriptPlayer APIリファレンス

ScriptPlayerは、.rgdスクリプトファイルを解釈および実行するコアコンポーネントです。物語の流れを管理し、コマンドを処理し、他のArgodeマネージャーとの相互作用を処理します。ScriptPlayerArgodeSystemの内部コンポーネントですが、その主要な機能は使いやすさのためにArgodeSystemの公開APIを通じて公開されています。

コア機能

スクリプトのロードと開始

ScriptPlayer.rgdファイルをロードし、指定されたポイントから実行を開始します。

load_script(path: String)

.rgdスクリプトファイルをScriptPlayerにロードします。これにより、スクリプトは実行準備が整いますが、すぐに開始されるわけではありません。

  • path (String): .rgdスクリプトファイルへのres://パス(例:"res://scenarios/chapter1.rgd")。

例:

ArgodeSystem.Player.load_script("res://scenarios/my_story.rgd")

play_from_label(label_name: String)

現在ロードされているスクリプト内の特定のlabelからスクリプトの実行を開始または再開します。ラベルが別の.rgdファイルにある場合、ScriptPlayerLabelRegistryを使用してクロスファイルジャンプを試行します。

  • label_name (String): ジャンプするlabelの名前(例:"start""chapter_2_intro")。

例:

# スクリプトをロードした後
ArgodeSystem.Player.play_from_label("start")

# または、ArgodeSystemの公開APIの一部として
ArgodeSystem.start_script("res://scenarios/my_story.rgd", "start")

スクリプトの進行

next()

スクリプトを次の行に進めます。このメソッドは通常、ユーザー入力(例:ダイアログを進めるためのマウスクリック)に応答してArgodeSystem.next_line()によって呼び出されます。

例:

# 入力ハンドラー内
func _input(event):
    if event.is_action_pressed("ui_accept"):
        ArgodeSystem.next_line() # これは内部的にScriptPlayer.next()を呼び出します

スクリプトの状態

is_playing() -> bool

ScriptPlayerが現在.rgdスクリプトを実行中であればtrueを、そうでなければfalseを返します。

フロー制御

ScriptPlayerは、jumpcallreturnif/elsemenuなど、.rgdスクリプトで定義されたさまざまなフロー制御コマンドを処理します。

on_choice_selected(choice_index: int)

このメソッドは、ユーザーがmenuコマンドから選択を行ったときにUIManagerによって呼び出されます。選択されたオプションに基づいて、ScriptPlayerをスクリプトの適切なブランチに誘導します。

  • choice_index (int): 選択された選択肢の0ベースのインデックス。

例(内部呼び出し):

# UIManagerは選択が行われた後にこれを呼び出します
ArgodeSystem.Player.on_choice_selected(selected_index)

外部呼び出し/戻り(UI統合用)

これらのメソッドは、一時的にスクリプトフローを制御し、その後戻る必要があるAdvScreenノードまたはその他のカスタムGodotシーンによって主に使用されます。

call_label(label_name: String)

現在のスクリプト位置をコールスタックにプッシュし、指定されたlabelにジャンプします。これは.rgdcallコマンドに似ていますが、GDScriptからトリガーできます。

  • label_name (String): 呼び出すlabelの名前。

例:

# AdvScreenスクリプトから
ArgodeSystem.Player.call_label("game_over_scene")

return_from_call()

コールスタックから最後の位置をポップし、その時点からスクリプトの実行を再開します。これは.rgdreturnコマンドに似ています。

例:

# AdvScreenスクリプトから、モーダル画面が閉じられた後
ArgodeSystem.Player.return_from_call()

シグナル

ScriptPlayerは、その状態の変化やイベントについてシステムの他の部分に通知するためにシグナルを発行します。

script_finished

ScriptPlayerが現在ロードされているスクリプトの終わりに達したときに発行されます。

custom_command_executed(command_name: String, parameters: Dictionary, line: String)

ScriptPlayer.rgdスクリプト内で組み込みコマンドではないコマンドを検出したときに発行されます。このシグナルは、主にCustomCommandHandlerによってカスタムGDScriptロジックにディスパッチするために使用されます。

  • command_name (String): カスタムコマンドの名前。
  • parameters (Dictionary): カスタムコマンドの解析されたパラメータを含む辞書。

  • line (String): .rgdスクリプトからの元の完全な行。


ArgodeSystem APIについて学ぶ → マネージャーAPIについて学ぶ →