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
8 changes: 4 additions & 4 deletions Docs/VS_Scratch_Mapping.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Scratch ブロックと FUnity 独自 Visual Scripting Unit の対応関係で
| ○秒待つ | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WaitSecondsUnit | ○秒待つ | FUnity/Scratch/制御 | 指定時間待機。Scratch スレッド登録で停止ブロックと連動。定義: Runtime/.../WaitSecondsUnit.cs |
| 自分のクローンを作る | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.CreateCloneOfSelfUnit | 自分のクローンを作る | FUnity/Scratch/制御 | 自身を複製。定義: Runtime/.../CloneUnits.cs |
| ○のクローンを作る | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.CreateCloneOfDisplayNameUnit | ○のクローンを作る | FUnity/Scratch/制御 | 指定俳優を複製。定義: Runtime/.../CloneUnits.cs |
| クローンされたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WhenIStartAsCloneUnit | クローンされたとき | Events/FUnity/Scratch/制御 | クローン生成時に発火する Scratch スクリプトの入口。イベント内でコルーチン開始直後に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出す。定義: Runtime/.../CloneUnits.cs |
| クローンされたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WhenIStartAsCloneUnit | クローンされたとき | Events/FUnity/Scratch/制御 | クローン生成時に発火する Scratch スクリプトの入口。`FUnityScriptThreadManager` 経由でコルーチンを開始し、直後に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出す。定義: Runtime/.../CloneUnits.cs |
| このクローンを削除する | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.DeleteThisCloneUnit | このクローンを削除する | FUnity/Scratch/制御 | クローンを破棄。定義: Runtime/.../CloneUnits.cs |
| すべてを止める | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.StopAllUnit | Scratch/すべてを止める | FUnity/Scratch/制御 | Scratch 用スレッドテーブル経由で全スレッド停止。定義: Runtime/.../StopControlUnits.cs |
| このスクリプトを止める | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.StopThisScriptUnit | Scratch/このスクリプトを止める | FUnity/Scratch/制御 | 現在の Scratch スレッドのみ停止。定義: Runtime/.../StopControlUnits.cs |
Expand All @@ -81,11 +81,11 @@ Scratch ブロックと FUnity 独自 Visual Scripting Unit の対応関係で
## イベント
| Scratch ブロック (日本語) | FUnity Unit クラス | UnitTitle | UnitCategory | 備考 |
| --- | --- | --- | --- | --- |
| 緑の旗が押されたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WhenGreenFlagClickedUnit | 緑の旗が押されたとき | Events/FUnity/Scratch/イベント | Runner 対象の緑の旗イベント。ScriptMachine.nest.macro を優先し、未設定時は machine.graph を入口としてフローを発火。発火時に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出し、Scratch スレッドを登録する。定義: Runtime/.../GreenFlagUnits.cs |
| ○キーが押されたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.OnKeyPressedUnit | ○キーが押されたとき | Events/FUnity/Scratch/イベント | 押下エッジで発火する Scratch スクリプトの入口。イベント内でコルーチン開始直後に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出す。定義: Runtime/.../InputEventUnits.cs |
| 緑の旗が押されたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WhenGreenFlagClickedUnit | 緑の旗が押されたとき | Events/FUnity/Scratch/イベント | Runner 対象の緑の旗イベント。`FUnityScriptThreadManager` 経由でコルーチンを開始し、`ScriptMachine.nest.macro` を入口としてフローを発火する。発火時に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出し、Scratch スレッドを登録する。定義: Runtime/.../GreenFlagUnits.cs |
| ○キーが押されたとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.OnKeyPressedUnit | ○キーが押されたとき | Events/FUnity/Scratch/イベント | 押下エッジで発火する Scratch スクリプトの入口。`FUnityScriptThreadManager` 経由でコルーチンを開始し、開始直後に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出す。定義: 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 スクリプトの入口。イベント内でコルーチン開始直後に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出す。定義: Runtime/.../MessagingUnits.cs |
| メッセージを受け取ったとき | FUnity.Runtime.Integrations.VisualScripting.Units.ScratchUnits.WhenIReceiveMessageUnit | メッセージを受け取ったとき | Events/FUnity/Scratch/イベント | フィルタ一致時に発火する Scratch スクリプトの入口。`FUnityScriptThreadManager` 経由でコルーチンを開始し、開始直後に `ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine)` を呼び出す。定義: Runtime/.../MessagingUnits.cs |

## 調べる
| Scratch ブロック (日本語) | FUnity Unit クラス | UnitTitle | UnitCategory | 備考 |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,10 +169,13 @@ protected override bool ShouldTrigger(Flow flow, CloneEventArgs args)
/// <param name="args">クローンイベント引数。</param>
private void TriggerWithThreadRegistration(GraphReference reference, CloneEventArgs args)
{
var flow = Flow.New(reference);
var coroutine = flow.StartCoroutine(RunEventCoroutine(flow, args));
using (var flow = Flow.New(reference))
{
var routine = RunEventCoroutine(flow, args);
var coroutine = FUnityScriptThreadManager.Instance.StartCoroutine(routine);

ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
}
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,13 @@ protected override bool ShouldTrigger(Flow flow, EmptyEventArgs args)
/// <param name="args">空のイベント引数。</param>
private void TriggerWithThreadRegistration(GraphReference reference, EmptyEventArgs args)
{
var flow = Flow.New(reference);
var coroutine = flow.StartCoroutine(RunEventCoroutine(flow, args));
using (var flow = Flow.New(reference))
{
var routine = RunEventCoroutine(flow, args);
var coroutine = FUnityScriptThreadManager.Instance.StartCoroutine(routine);

ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
}
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,13 @@ protected override bool ShouldTrigger(Flow flow, EmptyEventArgs args)
/// <param name="args">空のイベント引数。</param>
private void TriggerWithThreadRegistration(GraphReference reference, EmptyEventArgs args)
{
var flow = Flow.New(reference);
var coroutine = flow.StartCoroutine(RunEventCoroutine(flow, args));
using (var flow = Flow.New(reference))
{
var routine = RunEventCoroutine(flow, args);
var coroutine = FUnityScriptThreadManager.Instance.StartCoroutine(routine);

ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
}
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,13 @@ protected override bool ShouldTrigger(Flow flow, MessagingCommon.Args args)
/// <param name="args">受信したメッセージ引数。</param>
private void TriggerWithThreadRegistration(GraphReference reference, MessagingCommon.Args args)
{
var flow = Flow.New(reference);
var coroutine = flow.StartCoroutine(RunEventCoroutine(flow, args));
using (var flow = Flow.New(reference))
{
var routine = RunEventCoroutine(flow, args);
var coroutine = FUnityScriptThreadManager.Instance.StartCoroutine(routine);

ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
ScratchUnitUtil.EnsureScratchThreadRegistered(flow, coroutine);
}
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -302,10 +302,6 @@ public static string EnsureScratchThreadRegistered(
if (flow.stack?.machine is ScriptMachine machine)
{
graph = machine.nest?.macro as ScriptGraphAsset;
if (graph == null)
{
graph = machine.graph as ScriptGraphAsset;
}
}

return EnsureScratchThreadRegistered(flow, adapter, graph, coroutine);
Expand Down