UI Toolkit ベースの Scratch 風学習環境で、子どもたちの創造力を引き出す。
- メニュー
FUnity / Authoring / Switch Mode…から Scratch モードと unityroom モードを切り替えできます。 - アクティブな設定は
Assets/FUnity/Resources/FUnityActiveMode.assetに保存され、ランタイム初期化で参照されます。 - 各モードの仕様やブロック互換ポリシーは
Assets/FUnity/Docs/Modes/README.mdを参照してください。
- UPM の Git URL(
https://github.com/oco777/FUnity.git)で導入可能。タグ指定(例:#v0.1.0)によるバージョン固定にも対応。 - Samples~/BasicScene 内の FUnitySample.unity を開いて、ワンコマンド(FUnity/Create/Default Project Data)で初期データを生成。
Runtime/Resources/Backgrounds/Background_01.pngとFUnityActorData_Fooniを自動設定し、背景とフーニーが 5 分で表示される。FUnityManagerがシーン起動時に “FUnity UI” GameObject とUIDocumentを構築し、UI ブリッジや Runner 参照をセットアップ。- Unity Visual Scripting を 必須依存とし、Macro が無い場合でも
Fooni_FloatSetup.assetを自動生成して割り当てる。 - Scratch 互換の見た目操作として「大きさを ◯ % にする」「大きさを ◯ % ずつ変える」ユニットを提供し、Presenter 経由で UI Toolkit
style.scaleを中心ピボットで適用。
- システム要件
- インストール(UPM/Git)
- クイックスタート
- Default Project Data が行うこと
- ランタイム構築フロー
- ⚙ Modes
- Visual Scripting での移動例
- トラブルシューティング早見表
- ドキュメント
- ライセンス
- 貢献方法
- Unity 6 (6000.x) 以降。
- .NET Standard 2.1 互換ランタイム。
- UI Toolkit / UI Builder。
- Unity Visual Scripting 1.9.7 以降(FUnity の依存として自動追加される)。
Packages/manifest.json の dependencies に次のエントリを追加します。
"com.papacoder.funity": "https://github.com/oco777/FUnity.git"特定のタグに固定したい場合は、#タグ名 を付けます。
"com.papacoder.funity": "https://github.com/oco777/FUnity.git#v0.1.0"ℹ️ Visual Scripting は必須依存のため、
#if UNITY_VISUAL_SCRIPTINGなどのガードは不要です。パッケージ導入時にcom.unity.visualscriptingが自動インストールされます。
- Package Manager を開き、Samples → BasicScene の Import を押して
Samples~/BasicScene/FUnitySample.unityを開きます。 - メニュー FUnity > Create > Default Project Data を実行し、プロジェクト既定データを生成します。
- シーンを再生すると背景画像(
Background_01.png)とフーニーの俳優 UI が表示され、サンプル Macro による移動が動作します。
- FUnity > Create > Scratch Starter (Actor+Stage+VS) を実行すると、Stage/Actor/Runner が Scratch 本の定番構成で一括生成されます。
FUnityActorData_StarterにはActorElement.uxml/ussと吹き出し用ラベルが割り当て済みで、StageBackgroundServiceが UI Toolkit の背景に適用されます。- Runner は
ScriptMachineに空のマクロを割り当てて生成されるため、Visual Scripting グラフをすぐに編集できます。
- Visual Scripting のグラフは Runner の
ScriptMachineから新規 Macro を作成し、VSPresenterBridgeの Custom Event を結線すると Scratch ブロック相当の操作が行えます。
Assets/FUnity/Editor/CreateProjectData.cs の Create Default Project Data は、既存リソースを尊重しつつ以下を保証します。
Resources/FUnityProjectData.assetとResources/FUnityStageData.assetを生成し、ステージ背景にRuntime/Resources/Backgrounds/Background_01.pngを設定。Assets/UI Toolkit/UnityThemes/UnityDefaultRuntimeTheme.ussが存在する場合はそれをFUnityPanelSettings.asset(Assets/FUnity/UI/)の ThemeStyleSheet に割り当て。存在しなければAssets/FUnity/UI/USS/UnityDefaultRuntimeTheme.ussを生成し、同アセットに設定。Assets/FUnity/Data/Actors/FUnityActorData_Fooni.assetを作成し、既存の重複リソース(Assets/Resources/FUnityActorData_Fooni.assetなど)を検出して削除。Portrait/UXML/USS を既定テンプレートに割り当てます。Assets/FUnity/VisualScripting/Macros/Fooni_FloatSetup.assetを探索し、無ければ新規作成。生成した Macro をFUnityActorData_Fooniの ScriptGraph に登録します。
- シーンに
FUnityManagerを 1 体置くだけで、再生開始時に “FUnity UI” GameObject とUIDocumentを生成。 FUnityManagerはFUnityProjectDataを参照して各 Actor Runner を生成し、Runner 側のScriptMachineとActorPresenterAdapterを構成しつつ、FooniUIBridgeやVSPresenterBridgeなど必要なコンポーネントを結線します。- Actor ごとに
FUnityActorDataに設定された Macro がScriptMachineに割り当てられ、ActorPresenterがActorStateとActorViewを橋渡しします。 - Visual Scripting を用いず C# だけで動作させたい場合も、Presenter 層でロジックを完結させることで UI 更新と分離できます。
- サンプル Macro(
Fooni_FloatSetup)では、On Update→Get Axis (Horizontal/Vertical)→Vector2(Y を*-1で反転)→FooniUIBridge.NudgeByDefaultSpeed(dir, deltaTime)の流れで移動量を計算します。 - 入力 API は
FUnity.Runtime.InputとUnityEngine.Inputの名前空間が衝突しやすいため、UnityEngine.Input.GetAxisRawのように完全修飾呼び出しを推奨します。
CS0234(Input.GetAxisRawが見つからない):UnityEngine.Input.GetAxisRawと完全修飾するか、using UInput = UnityEngine.Input;を追加します。- テーマが null のまま:
Assets/UI Toolkit/UnityThemes/を確認し、存在しない場合は Default Project Data を再実行してAssets/FUnity/UI/USS/UnityDefaultRuntimeTheme.ussが生成されることを確認します。 - 俳優 UI が表示されない:
FooniElement.uxmlでname="root"とname="actor-root"が設定されているか確認し、FooniUIBridgeが要素を取得できるようにします。
- 本プロジェクトは MIT License に従います。
- Issue と Pull Request を歓迎します。まずは課題を記載し、再現手順・スクリーンショットを添付してください。
- コーディング規約とコメント方針は Docs/conventions.md を参照してください。
