Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Docs/VS_Scratch_Mapping.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Scratch ブロックと FUnity 独自 Visual Scripting Unit の対応関係で
| Scratch ブロック (日本語) | FUnity Unit クラス | UnitTitle | UnitCategory | 備考 |
| --- | --- | --- | --- | --- |
| 緑の旗が押されたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WhenGreenFlagClickedUnit | 緑の旗が押されたとき | Events/FUnity/Scratch/イベント | Runner 対象の緑の旗イベント。`StartScratchCoroutine` を経由してフローを発火し、開始直後に Scratch スレッドへ登録する。定義: Runtime/.../GreenFlagUnits.cs |
| ○キーが押されたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.OnKeyPressedUnit | ○キーが押されたとき | Events/FUnity/Scratch/イベント | 押下エッジで発火する Scratch スクリプトの入口。`StartScratchCoroutine` を経由して開始し、Scratch スレッド登録と停止ブロック連携を保証する。イベントデータは EventUnit 標準の Data 型に揃え、GraphPointerException を防止する。定義: Runtime/.../InputEventUnits.cs |
| ○キーが押されたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.OnKeyPressedUnit | ○キーが押されたとき | Events/FUnity/Scratch/イベント | Update フックを自前登録し、各フレームで押下エッジを検出してから `StartScratchCoroutine` へ渡す。Scratch スレッド登録と停止ブロック連携を保証し、イベントデータは EventUnit 標準の Data 型に揃えて GraphPointerException を防止する。定義: Runtime/.../InputEventUnits.cs |
| メッセージを送る | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.BroadcastMessageUnit | メッセージを送る | FUnity/Scratch/イベント | 即時配信。定義: Runtime/.../MessagingUnits.cs |
| メッセージを送って待つ | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.BroadcastAndWaitUnit | メッセージを送って待つ | FUnity/Scratch/イベント | 同期配信後に継続。定義: Runtime/.../MessagingUnits.cs |
| メッセージを受け取ったとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WhenIReceiveMessageUnit | メッセージを受け取ったとき | Events/FUnity/Scratch/イベント | フィルタ一致時に発火する Scratch スクリプトの入口。`StartScratchCoroutine` を経由して開始し、Scratch スレッド登録と停止ブロック連携を保証する。定義: Runtime/.../MessagingUnits.cs |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ public sealed class OnKeyPressedUnit : EventUnit<EmptyEventArgs>
/// </summary>
private bool m_WasDown;

/// <summary>EventUnit の自動登録機構を利用するための設定値です。</summary>
protected override bool register => true;
/// <summary>
/// EventUnit の自動登録機構は使わず、StartListening/StopListening で明示的に登録します。
/// </summary>
protected override bool register => false;

/// <summary>
/// Update フックを利用してキー状態をポーリングします。
Expand All @@ -39,6 +41,35 @@ public override EventHook GetHook(GraphReference reference)
return EventHooks.Update;
}

/// <summary>
/// グラフ開始時に Update イベントへの購読を開始します。
/// FUnity の Scratch スレッド管理と連携するため、TriggerWithThreadRegistration を登録します。
/// </summary>
/// <param name="stack">現在のグラフスタック。</param>
public override void StartListening(GraphStack stack)
{
base.StartListening(stack);

var reference = stack.ToReference();
var hook = GetHook(reference);

EventBus.Register<EmptyEventArgs>(hook, TriggerWithThreadRegistration);
}

/// <summary>
/// グラフ終了時に Update イベントからの購読を解除します。
/// </summary>
/// <param name="stack">現在のグラフスタック。</param>
public override void StopListening(GraphStack stack)
{
var reference = stack.ToReference();
var hook = GetHook(reference);

EventBus.Unregister<EmptyEventArgs>(hook, TriggerWithThreadRegistration);

base.StopListening(stack);
}

/// <summary>
/// ポート定義を行い、キー入力を条件とするイベントを登録します。
/// </summary>
Expand Down