add an Open Game Scenes menu, and fix the Editor-lock check
The scenes were never destroyed. Pressing Play with only Bootstrap open means GameBootstrap loads Systems and the level at runtime, and Unity discards runtime-loaded scenes when Play ends, restoring whatever the Editor had open — Bootstrap alone. The Hierarchy comes back nearly empty. Every scene file was byte-identical to HEAD throughout, still text. Tools > Nightclub Arcadia > Open Game Scenes opens all three with the level active, which is the authoring setup. With them already open, GameBootstrap's LoadIfNeeded skips them and they survive Play. GameSceneWorkflow also captures the scene setup before Play and restores it afterwards as a safety net, skipping the restore when Unity already got it right and ignoring scenes deleted meanwhile — an exception in that callback would leave the Editor in a worse state than the problem it fixes. Toggleable under the same menu. Also fixes `make lock`, which had a self-matching bug since Phase 1: `pgrep -f` on the full binary path matched the very shell running the check, because the pattern appears in its own command line. It reported the Editor as running when nothing was, and would have blocked every make test/build once anything else matched. Now `pgrep -x Unity`, which matches the process name and cannot match the shell. EditMode 42/42, PlayMode 6/6, YarnCheck 9 files / 35 nodes. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -52,7 +52,12 @@ build: lock ## Build a macOS player into build/
|
||||
-o $(CURDIR)/build/NightclubArcadia.app
|
||||
|
||||
lock: ## Fail if the Unity Editor has the project open
|
||||
@if pgrep -fl "Unity.app/Contents/MacOS/Unity" | grep -v AssetImportWorker | grep -q .; then \
|
||||
# pgrep -x matches the process NAME only. The previous `pgrep -f` on the full
|
||||
# binary path matched this very shell, because the pattern appears in its own
|
||||
# command line — the check reported the Editor running when nothing was.
|
||||
# AssetImportWorkers share the name but only exist alongside an Editor, so
|
||||
# matching them is correct rather than a false positive.
|
||||
@if pgrep -x Unity > /dev/null 2>&1; then \
|
||||
echo "The Unity Editor is running — close it first (only one instance per project)."; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user