@aqian0/dsh-unity 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/LICENSE-UNITY-COMPANION.md +122 -0
- package/LICENSE.md +31 -0
- package/NOTICE.md +90 -0
- package/README.md +273 -2
- package/cordis.patch.yml +22 -0
- package/docs/design.md +297 -0
- package/icon.svg +16 -0
- package/lib/frontmatter.js +392 -0
- package/lib/gating.js +105 -0
- package/lib/harness.js +16 -0
- package/lib/index.js +171 -0
- package/lib/project.js +210 -0
- package/lib/registry.js +268 -0
- package/lib/requirements.js +214 -0
- package/lib/skills.js +191 -0
- package/lib/types/frontmatter.d.ts +84 -0
- package/lib/types/gating.d.ts +80 -0
- package/lib/types/harness.d.ts +152 -0
- package/lib/types/index.d.ts +75 -0
- package/lib/types/project.d.ts +93 -0
- package/lib/types/registry.d.ts +96 -0
- package/lib/types/requirements.d.ts +67 -0
- package/lib/types/skills.d.ts +54 -0
- package/lib/types/watch.d.ts +34 -0
- package/lib/watch.js +84 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +70 -4
- package/skills/2d-pixel-perfect/SKILL.md +208 -0
- package/skills/2d-pixel-perfect/references/api-reference.md +81 -0
- package/skills/2d-pixel-perfect/references/camera-setup-builtin.cs +40 -0
- package/skills/2d-pixel-perfect/references/camera-setup-urp.cs +49 -0
- package/skills/2d-pixel-perfect/references/pipeline-detection.cs +50 -0
- package/skills/2d-pixel-perfect/references/sprite-settings.cs +37 -0
- package/skills/asset-transformer-toolkit/SECURITY.md +15 -0
- package/skills/asset-transformer-toolkit/SKILL.md +39 -0
- package/skills/asset-transformer-toolkit/references/create-importer.md +121 -0
- package/skills/asset-transformer-toolkit/references/lods.md +61 -0
- package/skills/asset-transformer-toolkit/references/rule-api.md +154 -0
- package/skills/asset-transformer-toolkit/references/ruleblock-api.md +37 -0
- package/skills/asset-transformer-toolkit/references/ruleset-api.md +138 -0
- package/skills/asset-transformer-toolkit/references/rulesets-and-actions.md +227 -0
- package/skills/audio-setup-mixers/SECURITY.md +16 -0
- package/skills/audio-setup-mixers/SKILL.md +127 -0
- package/skills/audio-setup-mixers/references/api.md +162 -0
- package/skills/build-gtk/SECURITY.md +16 -0
- package/skills/build-gtk/SKILL.md +200 -0
- package/skills/build-gtk/references/api-reference.md +33 -0
- package/skills/build-gtk/references/graph-api-gaps.md +96 -0
- package/skills/build-gtk/references/runtime-and-visualization.md +191 -0
- package/skills/build-gtk/references/state-machine-api.md +270 -0
- package/skills/build-gtk/references/where-the-docs-stop.md +49 -0
- package/skills/build-live-game/SKILL.md +159 -0
- package/skills/build-live-game/references/achievements.md +757 -0
- package/skills/build-live-game/references/apis.md +271 -0
- package/skills/build-live-game/references/authentication.md +431 -0
- package/skills/build-live-game/references/battlepass.md +904 -0
- package/skills/build-live-game/references/blueprints-and-samples.md +75 -0
- package/skills/build-live-game/references/cloud-code-cloudbehaviours.md +1111 -0
- package/skills/build-live-game/references/cloud-code-modules.md +1276 -0
- package/skills/build-live-game/references/cloud-code.md +58 -0
- package/skills/build-live-game/references/cloud-save.md +464 -0
- package/skills/build-live-game/references/deployment.md +231 -0
- package/skills/build-live-game/references/orientation.md +30 -0
- package/skills/build-live-game/references/player-account.md +821 -0
- package/skills/build-live-game/references/remote-config.md +96 -0
- package/skills/build-live-game/references/services-overview.md +76 -0
- package/skills/build-live-game/references/tooling.md +375 -0
- package/skills/build-live-game/references/ugs-cli.md +86 -0
- package/skills/craft-game-floors/SECURITY.md +23 -0
- package/skills/craft-game-floors/SKILL.md +134 -0
- package/skills/craft-game-floors/references/art-direction.md +85 -0
- package/skills/craft-game-floors/references/camera-rigs.md +51 -0
- package/skills/craft-game-floors/references/character-motion.md +35 -0
- package/skills/craft-game-floors/references/game-audio.md +47 -0
- package/skills/craft-game-floors/references/game-feel.md +68 -0
- package/skills/craft-game-floors/references/game-shell.md +45 -0
- package/skills/craft-game-floors/references/live-floor.md +35 -0
- package/skills/craft-game-floors/references/placeholder-assets.md +35 -0
- package/skills/craft-game-floors/references/scene-lighting.md +52 -0
- package/skills/craft-game-floors/references/toon-shading.md +34 -0
- package/skills/craft-game-floors/references/vfx.md +40 -0
- package/skills/craft-game-floors/references/visual-scorecard.md +43 -0
- package/skills/create-2d-physics/SECURITY.md +16 -0
- package/skills/create-2d-physics/SKILL.md +128 -0
- package/skills/create-2d-physics/references/2d-physics-core.md +155 -0
- package/skills/create-2d-physics/references/legacy-2d-physics.md +45 -0
- package/skills/create-tile-palette-or-rule-tiles/SKILL.md +95 -0
- package/skills/create-tile-palette-or-rule-tiles/references/hexagonalruletile.md +71 -0
- package/skills/create-tile-palette-or-rule-tiles/references/palette-create.md +38 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createempty.md +37 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createfromsegment.md +219 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile.md +95 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/CreatePaletteTemplate.cs +148 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/ManualWorkflowExample.cs +63 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/RuleTileGenerator.cs +61 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/TilemapRuleTileCreateFromSegment.cs +225 -0
- package/skills/fix-3d-physics-collisions/SECURITY.md +17 -0
- package/skills/fix-3d-physics-collisions/SKILL.md +139 -0
- package/skills/fix-3d-physics-collisions/references/collision-checklist.md +80 -0
- package/skills/fix-3d-physics-collisions/references/collision-debugger.md +18 -0
- package/skills/fix-3d-physics-collisions/references/console-errors-table.md +9 -0
- package/skills/fix-3d-physics-collisions/references/kinematic-trigger-facts.md +18 -0
- package/skills/fix-3d-physics-collisions/references/other-symptoms.md +29 -0
- package/skills/fix-3d-physics-collisions/references/raycast-checklist.md +8 -0
- package/skills/fix-3d-physics-collisions/references/topic-map.md +42 -0
- package/skills/fix-3d-physics-collisions/references/trigger-checklist.md +9 -0
- package/skills/fix-3d-physics-collisions/scripts/CollisionDebugger.cs +561 -0
- package/skills/generate-editor-search-query/SECURITY.md +17 -0
- package/skills/generate-editor-search-query/SKILL.md +117 -0
- package/skills/generate-editor-search-query/references/open-search-window.md +70 -0
- package/skills/generate-editor-search-query/references/query-patterns.md +124 -0
- package/skills/implement-in-app-purchases/SKILL.md +82 -0
- package/skills/implement-in-app-purchases/references/api-details.md +41 -0
- package/skills/implement-in-app-purchases/references/api-notes.md +105 -0
- package/skills/implement-in-app-purchases/references/codeless-catalog.md +197 -0
- package/skills/implement-in-app-purchases/references/convert-adapty.md +270 -0
- package/skills/implement-in-app-purchases/references/convert-essentialkit.md +239 -0
- package/skills/implement-in-app-purchases/references/convert-revenuecat.md +277 -0
- package/skills/implement-in-app-purchases/references/convert-unipay.md +145 -0
- package/skills/implement-in-app-purchases/references/migration-v4-to-v5.md +46 -0
- package/skills/implement-in-app-purchases/references/path-add-iap-to-new-project.md +197 -0
- package/skills/implement-in-app-purchases/references/path-convert-native-google-billing.md +302 -0
- package/skills/implement-in-app-purchases/references/path-convert-native-storekit.md +357 -0
- package/skills/implement-in-app-purchases/references/path-implement-iap-d2c.md +253 -0
- package/skills/implement-in-app-purchases/references/platform-notes.md +55 -0
- package/skills/implement-in-app-purchases/references/pre-check.md +207 -0
- package/skills/implement-in-app-purchases/references/topic-map.md +46 -0
- package/skills/initialize-ai-navigation/SKILL.md +109 -0
- package/skills/initialize-ai-navigation/references/navigation-system.md +793 -0
- package/skills/initialize-ai-navigation/references/topic-map.md +66 -0
- package/skills/levelplay-unity-integration/SKILL.md +122 -0
- package/skills/levelplay-unity-integration/references/adding-more-ad-formats.md +15 -0
- package/skills/levelplay-unity-integration/references/banner-api.md +927 -0
- package/skills/levelplay-unity-integration/references/best-practices.md +604 -0
- package/skills/levelplay-unity-integration/references/dependency-resolution.md +94 -0
- package/skills/levelplay-unity-integration/references/examples.md +10 -0
- package/skills/levelplay-unity-integration/references/ilrd-api.md +337 -0
- package/skills/levelplay-unity-integration/references/initialization-api.md +851 -0
- package/skills/levelplay-unity-integration/references/interstitial-api.md +907 -0
- package/skills/levelplay-unity-integration/references/ios-setup.md +463 -0
- package/skills/levelplay-unity-integration/references/migration-sdk-9.md +666 -0
- package/skills/levelplay-unity-integration/references/privacy-settings.md +593 -0
- package/skills/levelplay-unity-integration/references/production-release-checklist.md +22 -0
- package/skills/levelplay-unity-integration/references/rewarded-api.md +918 -0
- package/skills/levelplay-unity-integration/references/step-0-new-or-migration.md +8 -0
- package/skills/levelplay-unity-integration/references/step-1-verify-environment.md +4 -0
- package/skills/levelplay-unity-integration/references/step-10-testing.md +15 -0
- package/skills/levelplay-unity-integration/references/step-2-business-goals.md +12 -0
- package/skills/levelplay-unity-integration/references/step-3-install-sdk.md +55 -0
- package/skills/levelplay-unity-integration/references/step-4-native-dependencies.md +22 -0
- package/skills/levelplay-unity-integration/references/step-5-app-key-and-ad-units.md +18 -0
- package/skills/levelplay-unity-integration/references/step-6-5-privacy-and-regulation.md +51 -0
- package/skills/levelplay-unity-integration/references/step-6-admob-keys.md +16 -0
- package/skills/levelplay-unity-integration/references/step-7-initialize.md +50 -0
- package/skills/levelplay-unity-integration/references/step-8-ad-unit-strategy.md +16 -0
- package/skills/levelplay-unity-integration/references/step-9-implement-ad-units.md +66 -0
- package/skills/levelplay-unity-integration/references/testing-and-validation.md +222 -0
- package/skills/levelplay-unity-integration/references/troubleshooting.md +99 -0
- package/skills/localize-unity-project/SKILL.md +159 -0
- package/skills/localize-unity-project/references/api-notes.md +15 -0
- package/skills/localize-unity-project/references/cjk-fonts.md +83 -0
- package/skills/localize-unity-project/references/docs-map.md +42 -0
- package/skills/localize-unity-project/references/documentation-lookup.md +33 -0
- package/skills/localize-unity-project/references/locale-switching.md +17 -0
- package/skills/localize-unity-project/references/table-completeness-check.md +47 -0
- package/skills/localize-unity-project/references/translating-existing-project.md +47 -0
- package/skills/localize-unity-project/references/translation-strategy.md +41 -0
- package/skills/localize-unity-project/references/troubleshooting.md +12 -0
- package/skills/localize-unity-project/scripts/L10nBatchProcessor.cs +191 -0
- package/skills/localize-unity-project/scripts/LocalizedFontAsset.cs +18 -0
- package/skills/manage-sprite-atlas/SKILL.md +202 -0
- package/skills/manage-sprite-atlas/references/addressables-delivery.md +58 -0
- package/skills/manage-sprite-atlas/references/advanced-manual-authoring.md +19 -0
- package/skills/manage-sprite-atlas/references/api.md +382 -0
- package/skills/manage-sprite-atlas/references/best-practices.md +183 -0
- package/skills/manage-sprite-atlas/references/common-errors.md +123 -0
- package/skills/manage-sprite-atlas/references/complete-workflow.md +61 -0
- package/skills/manage-sprite-atlas/references/custom-packing.md +147 -0
- package/skills/manage-sprite-atlas/references/delivery-mechanism.md +30 -0
- package/skills/manage-sprite-atlas/references/key-requirements.md +21 -0
- package/skills/manage-sprite-atlas/references/manual-authoring.md +39 -0
- package/skills/manage-sprite-atlas/references/namespaces.md +15 -0
- package/skills/manage-sprite-atlas/references/v2-architecture.md +21 -0
- package/skills/manage-sprite-atlas/resources/authoringvsruntime.cs +176 -0
- package/skills/manage-sprite-atlas/resources/buildaddressablespostprocess.cs +59 -0
- package/skills/manage-sprite-atlas/resources/cacheloadedatlases.cs +145 -0
- package/skills/manage-sprite-atlas/resources/cleanupbatchoperations.cs +119 -0
- package/skills/manage-sprite-atlas/resources/createandconfiguremasteratlas.cs +57 -0
- package/skills/manage-sprite-atlas/resources/custompackersetup.cs +88 -0
- package/skills/manage-sprite-atlas/resources/deprecatedmethods.cs +142 -0
- package/skills/manage-sprite-atlas/resources/dontmodifywithoutsaving.cs +120 -0
- package/skills/manage-sprite-atlas/resources/dontpackinruntimebuilds.cs +190 -0
- package/skills/manage-sprite-atlas/resources/dontscriptspriteatlasineditor.cs +114 -0
- package/skills/manage-sprite-atlas/resources/editorconfiguration.cs +95 -0
- package/skills/manage-sprite-atlas/resources/enablespritepacking.cs +172 -0
- package/skills/manage-sprite-atlas/resources/gridspritepacker.cs +50 -0
- package/skills/manage-sprite-atlas/resources/handlelatebinding.cs +147 -0
- package/skills/manage-sprite-atlas/resources/handlenullcases.cs +141 -0
- package/skills/manage-sprite-atlas/resources/migratev1tov2.cs +335 -0
- package/skills/manage-sprite-atlas/resources/multipagepacker.cs +80 -0
- package/skills/manage-sprite-atlas/resources/optimizetexturesettings.cs +191 -0
- package/skills/manage-sprite-atlas/resources/packerdebugging.cs +158 -0
- package/skills/manage-sprite-atlas/resources/packtransform.cs +51 -0
- package/skills/manage-sprite-atlas/resources/platformnames.cs +127 -0
- package/skills/manage-sprite-atlas/resources/queryspritesefficiently.cs +222 -0
- package/skills/manage-sprite-atlas/resources/registercallbacks.cs +152 -0
- package/skills/manage-sprite-atlas/resources/runtimeatlasloader.cs +15 -0
- package/skills/manage-sprite-atlas/resources/runtimespriteaccess.cs +19 -0
- package/skills/manage-sprite-atlas/resources/savespriteatlasasset.cs +107 -0
- package/skills/manage-sprite-atlas/resources/scriptablepacker.cs +81 -0
- package/skills/manage-sprite-atlas/resources/setincludeinbuild.cs +164 -0
- package/skills/manage-sprite-atlas/resources/sizeoptimizedpacker.cs +88 -0
- package/skills/manage-sprite-atlas/resources/spriteatlaslatebinding.cs +123 -0
- package/skills/manage-sprite-atlas/resources/spriteatlasprebuildgenerator.cs +219 -0
- package/skills/manage-sprite-atlas/resources/spritedata.cs +35 -0
- package/skills/manage-sprite-atlas/resources/spritepack.cs +39 -0
- package/skills/manage-sprite-atlas/resources/texturedata.cs +15 -0
- package/skills/manage-sprite-atlas/resources/updatebuildscripts.cs +357 -0
- package/skills/manage-sprite-atlas/resources/updatesettingsconfiguration.cs +135 -0
- package/skills/manage-sprite-atlas/resources/usevariantswisely.cs +179 -0
- package/skills/manage-sprite-atlas/resources/variantatlas.cs +39 -0
- package/skills/migrate-birp-to-urp/SECURITY.md +16 -0
- package/skills/migrate-birp-to-urp/SKILL.md +167 -0
- package/skills/migrate-birp-to-urp/references/capturing-the-editor.md +66 -0
- package/skills/migrate-birp-to-urp/references/complex-shader-situations.md +272 -0
- package/skills/migrate-birp-to-urp/references/conversion-and-rendering-triage.md +113 -0
- package/skills/migrate-birp-to-urp/references/custom-shader-triage.md +123 -0
- package/skills/migrate-birp-to-urp/references/implementation-patterns.md +529 -0
- package/skills/migrate-birp-to-urp/references/migration-workflow.md +265 -0
- package/skills/migrate-birp-to-urp/references/parity-validation-and-troubleshooting.md +114 -0
- package/skills/migrate-birp-to-urp/references/preflight-and-urp-setup.md +195 -0
- package/skills/migrate-birp-to-urp/references/quality-settings-map.md +69 -0
- package/skills/new-unity-project/SECURITY.md +26 -0
- package/skills/new-unity-project/SKILL.md +171 -0
- package/skills/new-unity-project/references/checklist.md +18 -0
- package/skills/new-unity-project/references/common-mistakes.md +15 -0
- package/skills/new-unity-project/references/skill-setup.md +66 -0
- package/skills/new-unity-project/references/step-1-concept.md +13 -0
- package/skills/new-unity-project/references/step-2-platforms-and-create.md +31 -0
- package/skills/new-unity-project/references/step-3-join-and-reconcile.md +16 -0
- package/skills/new-unity-project/references/step-4-source-control.md +9 -0
- package/skills/new-unity-project/references/step-5-packages.md +18 -0
- package/skills/new-unity-project/references/step-6-identity-and-floors.md +20 -0
- package/skills/new-unity-project/references/step-7-visual-baseline.md +75 -0
- package/skills/new-unity-project/references/step-8-first-commit.md +21 -0
- package/skills/new-unity-project/references/step-9-handoff.md +23 -0
- package/skills/optimize-audio/SECURITY.md +16 -0
- package/skills/optimize-audio/SKILL.md +120 -0
- package/skills/optimize-audio/references/diagnostics.md +42 -0
- package/skills/optimize-audio/references/troubleshooting.md +41 -0
- package/skills/optimize-audio/resources/audio-import-api.md +149 -0
- package/skills/optimize-audio/resources/platform-settings.md +48 -0
- package/skills/optimize-text-mesh-pro/SKILL.md +181 -0
- package/skills/optimize-text-mesh-pro/references/dynamic-atlas-and-profiling.md +28 -0
- package/skills/optimize-text-mesh-pro/references/topic-map.md +36 -0
- package/skills/optimize-web/SECURITY.md +16 -0
- package/skills/optimize-web/SKILL.md +157 -0
- package/skills/optimize-web/references/editor-csharp.md +120 -0
- package/skills/optimize-web/references/topic-map.md +49 -0
- package/skills/optimize-web/references/troubleshooting.md +45 -0
- package/skills/optimize-web/references/understand-request.md +19 -0
- package/skills/optimize-web/references/web-assets-quality.md +59 -0
- package/skills/optimize-web/references/web-player-settings.md +39 -0
- package/skills/optimize-web/references/web-profiling-memory.md +71 -0
- package/skills/optimize-web/scripts/WebOptimizer.cs +46 -0
- package/skills/optimize-web/scripts/toktx-examples.sh +11 -0
- package/skills/setup-multiplayer-services/SKILL.md +36 -0
- package/skills/setup-multiplayer-services/references/dgs-entrypoint.md +79 -0
- package/skills/setup-multiplayer-services/references/entrypoints.md +213 -0
- package/skills/setup-multiplayer-services/references/examples.md +33 -0
- package/skills/setup-multiplayer-services/references/implementation-fit.md +30 -0
- package/skills/setup-multiplayer-services/references/underlying-services.md +11 -0
- package/skills/setup-multiplayer-services/references/workflows-prerequisites.md +17 -0
- package/skills/setup-vivox-voice-chat/SECURITY.md +16 -0
- package/skills/setup-vivox-voice-chat/SKILL.md +166 -0
- package/skills/setup-vivox-voice-chat/references/api-reference-lookup.md +28 -0
- package/skills/setup-vivox-voice-chat/references/docs-topic-map.md +13 -0
- package/skills/setup-vivox-voice-chat/references/events-and-participants.md +79 -0
- package/skills/setup-vivox-voice-chat/references/init-and-login.md +92 -0
- package/skills/setup-vivox-voice-chat/references/text-chat.md +93 -0
- package/skills/setup-vivox-voice-chat/references/troubleshooting.md +47 -0
- package/skills/setup-vivox-voice-chat/references/voice-channels.md +92 -0
- package/skills/shader-graph-create-custom-node/SKILL.md +25 -0
- package/skills/shader-graph-create-custom-node/resources/all_hints.hlsl +182 -0
- package/skills/sprite-editor/SECURITY.md +16 -0
- package/skills/sprite-editor/SKILL.md +66 -0
- package/skills/sprite-editor/references/api_reference.md +151 -0
- package/skills/sprite-editor/references/background.md +112 -0
- package/skills/sprite-editor/references/templates.md +72 -0
- package/skills/sprite-editor/scripts/AutomaticSliceTexture.cs +40 -0
- package/skills/sprite-editor/scripts/GenerateNewSpriteRects.cs +200 -0
- package/skills/sprite-editor/scripts/GetTextureSourceImageSize.cs +32 -0
- package/skills/sprite-editor/scripts/GetTextureToSlice.cs +55 -0
- package/skills/sprite-editor/scripts/GridSliceTexture.cs +40 -0
- package/skills/sprite-editor/scripts/IsometricSliceTexture.cs +141 -0
- package/skills/sprite-editor/scripts/README.md +134 -0
- package/skills/sprite-editor/scripts/SetPivotExample.cs +58 -0
- package/skills/sprite-editor/scripts/SpriteToPng.cs +88 -0
- package/skills/sprite-segment-3x3grid/SKILL.md +177 -0
- package/skills/sprite-segment-3x3grid/references/topic-map.md +37 -0
- package/skills/sprite-segment-3x3grid/scripts/SpriteGridAnalysis.cs +119 -0
- package/skills/ui/SKILL.md +142 -0
- package/skills/ui-imgui/SKILL.md +180 -0
- package/skills/ui-imgui/references/gui-elements.md +156 -0
- package/skills/ui-imgui/references/templates.md +141 -0
- package/skills/ui-ugui/SKILL.md +217 -0
- package/skills/ui-ugui/references/layout-and-anchors.md +61 -0
- package/skills/ui-ugui/references/scrollview-setup.md +29 -0
- package/skills/ui-uitk/SKILL.md +229 -0
- package/skills/ui-uitk/references/common-issues.md +74 -0
- package/skills/ui-uitk/references/custom-elements.md +241 -0
- package/skills/ui-uitk/references/painter2d.md +282 -0
- package/skills/ui-uitk/references/pointermanipulator-guide.md +94 -0
- package/skills/ui-uitk/references/svg-icons.md +136 -0
- package/skills/ui-uitk/references/ui-runtime-binding.md +234 -0
- package/skills/ui-uitk/references/uss-guide.md +138 -0
- package/skills/unity-cli/CHANGELOG.md +524 -0
- package/skills/unity-cli/SECURITY.md +68 -0
- package/skills/unity-cli/SKILL.md +160 -0
- package/skills/unity-cli/references/auth-license-cloud.md +318 -0
- package/skills/unity-cli/references/bootstrap-project.md +177 -0
- package/skills/unity-cli/references/build-run-test.md +555 -0
- package/skills/unity-cli/references/catalog-plugins.md +86 -0
- package/skills/unity-cli/references/ci-recipes.md +76 -0
- package/skills/unity-cli/references/cloud-automation.md +819 -0
- package/skills/unity-cli/references/cloud-workflows.md +19 -0
- package/skills/unity-cli/references/collaboration.md +533 -0
- package/skills/unity-cli/references/config-hub.md +239 -0
- package/skills/unity-cli/references/diagnostics-maintenance.md +718 -0
- package/skills/unity-cli/references/docs-workflow.md +179 -0
- package/skills/unity-cli/references/editor-targeting.md +29 -0
- package/skills/unity-cli/references/editors-install.md +490 -0
- package/skills/unity-cli/references/environment-variables.md +42 -0
- package/skills/unity-cli/references/exit-codes.md +47 -0
- package/skills/unity-cli/references/global-flags.md +32 -0
- package/skills/unity-cli/references/integration-advanced.md +1130 -0
- package/skills/unity-cli/references/notes.md +20 -0
- package/skills/unity-cli/references/notifications.md +39 -0
- package/skills/unity-cli/references/playmode-verification-loop.md +279 -0
- package/skills/unity-cli/references/projects-templates.md +997 -0
- package/skills/unity-cli/references/scene-editing-preflight.md +25 -0
- package/skills/unity-cli/references/setup-and-help.md +54 -0
- package/skills/unity-cli/references/version-control.md +612 -0
- package/skills/unity-package-management/SKILL.md +169 -0
- package/skills/unity-package-management/references/discovering-packages.md +66 -0
- package/skills/unity-package-management/references/headless-run.md +31 -0
- package/skills/unity-package-management/references/installer-script.md +92 -0
- package/skills/unity-package-management/references/select-packages.md +126 -0
- package/skills/unity-pipeline/SECURITY.md +17 -0
- package/skills/unity-pipeline/SKILL.md +205 -0
- package/skills/unity-pipeline/references/csharp-eval.md +23 -0
- package/skills/unity-pipeline/references/multiplayer-play-mode.md +103 -0
- package/skills/urp-postprocessing/SECURITY.md +16 -0
- package/skills/urp-postprocessing/SKILL.md +188 -0
- package/skills/urp-postprocessing/references/code-templates.md +150 -0
- package/skills/urp-postprocessing/references/effect-reference.md +86 -0
- package/skills/validate-urp-render-graph-renderer-feature/SKILL.md +92 -0
- package/skills/validate-urp-render-graph-renderer-feature/references/validation-checklist.md +179 -0
|
@@ -0,0 +1,718 @@
|
|
|
1
|
+
# Diagnostics & maintenance — unity-cli command reference
|
|
2
|
+
|
|
3
|
+
Part of the **`unity-cli`** skill. See that skill's `SKILL.md` for CLI install, global flags,
|
|
4
|
+
environment variables, exit codes, and common workflows. All global flags (`--format json`,
|
|
5
|
+
`--non-interactive`, `--yes`, `--proxy`, …) apply to every command below.
|
|
6
|
+
|
|
7
|
+
Relative links in this file resolve to the skill directory's `references/` folder, so `../SKILL.md` is the skill's main page.
|
|
8
|
+
|
|
9
|
+
### Contents
|
|
10
|
+
|
|
11
|
+
- Logs — application logs
|
|
12
|
+
- Logs --console: the running Editor's console
|
|
13
|
+
- Doctor — system diagnostics
|
|
14
|
+
- CI init — scaffold a working CI workflow
|
|
15
|
+
- Doctor --ci — preflight before a long pipeline step
|
|
16
|
+
- Diagnose update — why this install is or is not updating
|
|
17
|
+
- Diagnose proxy — proxy diagnostic report
|
|
18
|
+
- Diagnose accelerator — Unity Accelerator diagnostic report
|
|
19
|
+
- Environment
|
|
20
|
+
- Version — machine-readable version object
|
|
21
|
+
- Cache
|
|
22
|
+
- Cache key — deterministic key for CI cache steps
|
|
23
|
+
- Analytics — usage/telemetry consent
|
|
24
|
+
- Changelog
|
|
25
|
+
- Docs — version-matched Unity documentation
|
|
26
|
+
- Language
|
|
27
|
+
- Completion — shell tab completion
|
|
28
|
+
- Bug — report a bug
|
|
29
|
+
- Self-update — update the CLI itself
|
|
30
|
+
- Self-uninstall — remove the CLI
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
### Logs — application logs
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Show last 20 log lines (default)
|
|
38
|
+
unity logs
|
|
39
|
+
|
|
40
|
+
# Show last 50 lines
|
|
41
|
+
unity logs --tail 50
|
|
42
|
+
|
|
43
|
+
# Follow in real-time (like tail -f)
|
|
44
|
+
unity logs --follow
|
|
45
|
+
|
|
46
|
+
# Filter by level
|
|
47
|
+
unity logs --level error
|
|
48
|
+
unity logs --level warn
|
|
49
|
+
|
|
50
|
+
# Available levels: trace, debug, info, warn, error, fatal
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The CLI writes its own `cli-log.json` (separate from the Hub's `info-log.json`) and records its version on every start. `unity logs`, `unity bug`, and `unity doctor` read the CLI's own log.
|
|
54
|
+
|
|
55
|
+
> **Not the Unity Editor log.** `unity logs` shows the *CLI's* activity, **not** the Editor's
|
|
56
|
+
> `Editor.log`. To read Editor-side output — for example the compile errors that force an Editor into
|
|
57
|
+
> Safe Mode and block the Pipeline connection — read `Editor.log` directly (see
|
|
58
|
+
> [integration-advanced.md → Recovering from Safe Mode](integration-advanced.md#recovering-from-safe-mode-connection-fails-because-of-compile-errors) for its per-platform path and the full recovery loop).
|
|
59
|
+
|
|
60
|
+
### Logs --console: the running Editor's console
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# The last 20 console entries of the Editor this folder's project is open in
|
|
64
|
+
unity logs --console
|
|
65
|
+
|
|
66
|
+
# Errors only, from a named project's Editor
|
|
67
|
+
unity logs --console --level error --project-path /path/to/project
|
|
68
|
+
|
|
69
|
+
# Stream new console entries as the Editor logs them, one JSON object per line, until Ctrl-C
|
|
70
|
+
unity logs --console --follow --format ndjson
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`--console` reads the Editor console through the Pipeline package (`console get`), so the Editor
|
|
74
|
+
must be running with the package loaded. `--project-path <path>` (or `UNITY_PROJECT_PATH`) picks the
|
|
75
|
+
Editor, and typing `--project-path` without `--console` is a usage error. `--level` maps onto the
|
|
76
|
+
console's three levels: `trace`, `debug` and `info` show everything, `warn` shows warnings and
|
|
77
|
+
errors, `error` and `fatal` show errors. `--tail 0` asks for every entry the console buffer holds.
|
|
78
|
+
|
|
79
|
+
Each entry carries `seq`, `time` (UTC), `level` (`log`, `warn`, `error`), `logType` (Unity's own
|
|
80
|
+
`Log`, `Warning`, `Error`, `Assert` or `Exception`), `message`, `stackTrace`, `seeded` (read from the
|
|
81
|
+
Editor console's store rather than captured live) and `diagnostic`. `diagnostic` is `null` unless the
|
|
82
|
+
message's first line is a compiler diagnostic; then it holds `source` (`burst` for Burst's
|
|
83
|
+
`BCnnnn` errors, `compiler` for the C# compiler), `severity`, `code`, `file`, `line`, `column` and
|
|
84
|
+
`message`. In `tsv` the columns are `seq`, `time`, `level`, `logType`, `message` and the
|
|
85
|
+
`diagnostic.*` fields, after a header row.
|
|
86
|
+
|
|
87
|
+
`--follow` resumes from the console's cursor, so no entry is written twice. It keeps running through
|
|
88
|
+
a script reload or an Editor restart, and stays on the first Editor it read. It says on stderr, once
|
|
89
|
+
per outage, that it lost the connection or what the Editor answered instead of entries. It also says
|
|
90
|
+
when the Editor restarted, or when entries were evicted from the buffer before it could read them.
|
|
91
|
+
Under `--format json` each of these is one `{"warning": "..."}` line on stderr.
|
|
92
|
+
Only a failed first read fails the command (exit `12` when no Editor is running for the project).
|
|
93
|
+
Ctrl-C ends it with exit `130`. A Pipeline package older than 0.7.0-exp.1 can't be followed (it
|
|
94
|
+
reports no console session), and the command says to update it with `unity pipeline upgrade`.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Doctor — system diagnostics
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Full system report
|
|
102
|
+
unity doctor --format json
|
|
103
|
+
|
|
104
|
+
# Includes: platform info, auth status, installed editors, recent log lines, resolved proxy
|
|
105
|
+
unity doctor --tail 50
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
`unity doctor` reports real session state (matching `unity auth status`) and surfaces the resolved proxy URL, its source, and auth source. It carries an **Accelerator** section alongside the Proxy one, reporting the resolved endpoint and its source and — when a project is in scope — that project's cache-server mode and pinned endpoint. Three states, mirroring Proxy: a table, a plain `No Unity Accelerator configured.` (the common case, not a fault), or `Accelerator state unknown` when the configuration could not be read. Nothing there is a *check*: whether the endpoint answers is `doctor --ci`'s question, because the default collector is synchronous and cannot make a network call. It also runs environment health checks and reports pass/warn per check (in every output format): whether the `unity` binary's directory is actually on `PATH` (the top post-install pitfall on Windows, where a new terminal is needed), whether multiple `unity` binaries shadow each other on `PATH`, whether Windows long-path support is enabled, and whether a git credential helper is configured (`git-credential-helper`: advisory for the git-token flows in `projects clone`/`create`/`link vcs`; the row is omitted on machines without git).
|
|
109
|
+
|
|
110
|
+
A **"Third-party components"** section lists every open-source runtime dependency the binary bundles — the .NET runtime plus each direct NuGet package — with its version and SPDX license identifier, and points at `https://spdx.org/licenses/` for the full texts (not embedded, to keep the binary small). It's generated from the CLI's own build configuration, so it can never drift from what actually shipped, and it's informational only — never a pass/fail check.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### CI init — scaffold a working CI workflow
|
|
115
|
+
|
|
116
|
+
`unity ci init` writes a committed CI workflow generated from the project. Use it instead of assembling the steps by hand — it wires up the CLI's own CI features in the right order and encodes the parts that are otherwise learned by trial and error.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# GitHub Actions -> .github/workflows/unity.yml (the default provider).
|
|
120
|
+
# With no --project-path, it works on the directory you ran it from.
|
|
121
|
+
unity ci init
|
|
122
|
+
|
|
123
|
+
# GitLab CI -> .gitlab-ci.yml
|
|
124
|
+
unity ci init --provider gitlab
|
|
125
|
+
|
|
126
|
+
# Scope the workflow to a build target (validated like `unity build --target`)
|
|
127
|
+
unity ci init --target Android
|
|
128
|
+
|
|
129
|
+
# Review it before committing to anything
|
|
130
|
+
unity ci init --dry-run
|
|
131
|
+
|
|
132
|
+
# Another project; replace a workflow that is already there
|
|
133
|
+
unity ci init --project-path ./MyProject --overwrite
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
The generated workflow installs the CLI, restores the editor download cache and the project's `Library/` folder, installs the editor version from `ProjectSettings/ProjectVersion.txt`, activates a license, runs `unity doctor --ci` as a preflight, runs the tests with a JUnit report, builds, uploads the report and the build, and returns the license seat in a teardown step that runs even when the job failed or was cancelled.
|
|
137
|
+
|
|
138
|
+
What it derives from the project: the editor version (rejected unless it parses as a real Unity version, since it is interpolated into an install command on the runner), and the editor module the build target needs where that is unambiguous — `Android`, `iOS`, `tvOS`, `WebGL`, `WindowsStoreApps`, `VisionOS`, `Lumin`. The standalone desktop targets get no module, because each has il2cpp / mono / server variants and picking one from the target alone would be a guess; asking for `StandaloneOSX` or `StandaloneWindows64` warns that the install step needs a `--module` you choose.
|
|
139
|
+
|
|
140
|
+
Secrets are referenced by name only. The command never reads a credential and the generated file never contains one — it expects `UNITY_SERVICE_ACCOUNT_ID`, `UNITY_SERVICE_ACCOUNT_SECRET`, and `UNITY_LICENSE_SERIAL` to exist as repository secrets, and reports which ones to add after it writes.
|
|
141
|
+
|
|
142
|
+
Two things about licensing that the workflow states in comments, because they surprise people: service-account auth covers Unity *services*, not the editor licence, and `unity license activate --personal` is rejected outright for a service account. The generated step therefore activates from a serial (a bare `unity license activate` with `UNITY_LICENSE_SERIAL` in the step environment, so the serial never reaches argv), and ships the floating-server and offline-`.ulf` alternatives as commented blocks beside it.
|
|
143
|
+
|
|
144
|
+
The project rides `--project-path`, like `list`, `status`, `mcp configure`, `pipeline install` and `collaboration` — not a positional operand as on `build` / `test` / `cache key`. It takes a path, not a registry project name, and defaults to the current directory, so the common case is a bare `unity ci init` from the project root.
|
|
145
|
+
|
|
146
|
+
**Interactive vs scripted.** On a real terminal, anything you didn't pass is asked for: a picker for the provider, one for the build target, and one for how many parallel jobs to split the tests across (all three open on their default, so Enter accepts), plus a confirm before replacing a workflow that already exists. A flag always wins over its prompt, so `--provider gitlab --target Android --shards 4` asks nothing.
|
|
147
|
+
|
|
148
|
+
Nothing prompts when any one of these holds — `--non-interactive` (or `UNITY_NON_INTERACTIVE`), a machine `--format` (`json`, `ndjson`, `tsv`), `--format github`, or a redirected stdout. In that case the unpassed values take their defaults (`github`, `StandaloneLinux64`, no sharding) and an existing workflow is an exit-2 error naming `--overwrite` rather than a question. That means a CI job or a script gets identical behaviour whether or not it happens to be attached to a terminal.
|
|
149
|
+
|
|
150
|
+
**Splitting the suite: `--shards <n>`.** Off by default, and offered by the picker on a terminal. Accepts 2 to 64 — `1` is rejected rather than generating a one-leg matrix, so there is no flag spelling for "no sharding"; omit it instead. More shards than tests is safe, because `unity test --shard` reports an empty slice and skips the editor instead of quietly running the whole suite.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
unity ci init --shards 4
|
|
154
|
+
unity ci init --provider gitlab --shards 8
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Two things the generated matrix handles that a hand-written one usually does not. `unity test --shard N/M` splits the suite using an NUnit report from an *earlier* run, because the Editor cannot enumerate tests without running them — so a cold pipeline has nothing to split. Rather than fail, one shard runs the whole suite to write that inventory while the rest stand down: the first run is green and costs exactly one full suite. And a *stale* inventory is the dangerous case, since a test added after it was written would belong to no shard and run nowhere — green, and not running the new test. So the cached inventory is bound to a hash of every `.cs`, `.asmdef`, `.asmref` and `packages-lock.json` in the repository, and any change to them re-seeds the suite in full. (`unity cache key` deliberately ignores script changes, which is right for a `Library/` cache and wrong for this, so the inventory gets its own key.)
|
|
158
|
+
|
|
159
|
+
The trade: a run that touches C# pays for one full unsharded suite, and a run that does not — assets, scenes, shaders, config, a retry, a scheduled build — is split `n` ways. Never slower than the unsharded workflow, and never under-tested. The build gets its own job, since inside the matrix it would run once per shard and burn `n` licence seats; both providers aggregate the per-shard JUnit reports themselves, so there is no merge step.
|
|
160
|
+
|
|
161
|
+
`--dry-run` prints the workflow to stdout and nothing else, so it pipes into a file or a diff. `--format json` reports the written paths in `data.paths`, plus the resolved provider, editor version, build target, and module. Exit 2 on an unknown `--provider`, an invalid `--target`, an existing workflow file without `--overwrite`, or a stray positional argument; exit 6 when the directory isn't a Unity project or its editor version can't be read. Templates are embedded in the binary, so this works offline and always matches the CLI it ships with.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### Doctor --ci — preflight before a long pipeline step
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# First step of a CI job: fail in seconds instead of after a long build
|
|
169
|
+
unity doctor --ci
|
|
170
|
+
|
|
171
|
+
# Per-check results a workflow can branch on
|
|
172
|
+
unity doctor --ci --format json
|
|
173
|
+
|
|
174
|
+
# Failed checks become inline annotations on the pull request
|
|
175
|
+
unity doctor --ci --format github
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
`--ci` replaces the diagnostic report with a **preflight**: it verifies the environment can actually finish a build or test run and exits non-zero when it cannot, so a pipeline fails fast rather than tens of minutes into a build. It checks an activatable license, the project's required editor, free disk space, and reachability of the Unity services endpoint, and folds the `PATH` / long-path / git-credential-helper checks in as advisory rows that never fail a job.
|
|
179
|
+
|
|
180
|
+
Exit codes distinguish the two kinds of bad news, so a workflow can retry only what is worth retrying:
|
|
181
|
+
|
|
182
|
+
| Exit | Meaning |
|
|
183
|
+
|---|---|
|
|
184
|
+
| `0` | Every blocking check passed. Warnings do not fail the preflight. |
|
|
185
|
+
| `6` | A definitive failure — no license, the required editor is not installed, disk below the floor. Retrying will not help. |
|
|
186
|
+
| `7` | The preflight could not reach a verdict because a required service was unreachable. Worth a retry. |
|
|
187
|
+
|
|
188
|
+
A `6` outranks a `7` when both occur, so a real blocker is never reported as retryable.
|
|
189
|
+
|
|
190
|
+
On a machine licensed by a floating license server, the licensing client holds no license until the Editor leases a seat at startup. When no license is held and the configured server answers its `/v1/status` as healthy, the license row passes as `LICENSE_FLOATING` instead of failing as `LICENSE_NONE`. A runner that gets its license some other way can drop the row entirely:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
unity doctor --ci --skip-license
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
`--skip-license` reports the license row as `info` (`LICENSE_SKIPPED`) and never starts the licensing client. It only has an effect with `--ci`.
|
|
197
|
+
|
|
198
|
+
`--ci` also probes the configured Unity Accelerator, so a CI agent learns the cache server is down in seconds instead of discovering it as an unexplained twenty-minute import. **This check never blocks, in any arm** — an Accelerator is an accelerator, so an unreachable one is a `warn` (`ACCELERATOR_UNREACHABLE`, classified retryable) and a machine with none configured is an `info` row (`ACCELERATOR_NOT_CONFIGURED`). A project that does not use an Accelerator can never have its preflight failed by it. The probe targets the endpoint the CLI would hand to the Editor (the resolver's answer), not the project's own pinned endpoint.
|
|
199
|
+
|
|
200
|
+
Every check carries a machine-readable `code` (`LICENSE_NONE`, `EDITOR_NOT_INSTALLED`, `DISK_SPACE_LOW`, `NETWORK_UNREACHABLE`, …) plus a remediation `hint`. In `--format json` the per-check results stay in `data` even on failure, with one coded entry per failure in `errors`. Output is redacted and carries no tokens and no absolute user paths, so it is safe to paste into a public CI log.
|
|
201
|
+
|
|
202
|
+
`--ci` is always explicit — it is never inferred from `CI=true`, because a report that silently changed shape and exit code on a runner would be a trap. Note that the CLI already defaults to `--format tsv` whenever stdout is redirected, which in CI it usually is; that output leads with a `verdict` row.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### Diagnose update — why this install is or is not updating
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
unity diagnose update
|
|
210
|
+
unity diagnose update --json
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Reports how this install resolves updates: the channel it tracks, the manifest it reads, the version it found, and whichever condition is holding an update back. Reach for it when `unity self-update` reports nothing to do but a newer version is known to exist, or when an install seems pinned to an old version.
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
### Diagnose proxy — proxy diagnostic report
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Print a redacted, paste-safe proxy diagnostic report for support
|
|
221
|
+
unity diagnose proxy
|
|
222
|
+
|
|
223
|
+
# Machine-readable
|
|
224
|
+
unity diagnose proxy --json
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Reports the resolved proxy and where it came from, PAC configuration, CA bundle, and credential-store and Kerberos checks — redacted so it's safe to paste into a support ticket. A copy is also written to the logs directory. For per-request proxy logging over the course of a repro, use the global `--log-proxy` flag (or `UNITY_LOG_PROXY=1`), which writes one redacted entry per outbound request to `proxy-request.json`.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
### Diagnose accelerator — Unity Accelerator diagnostic report
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Resolved endpoint, project cache-server settings, and whether the endpoint answers
|
|
235
|
+
unity diagnose accelerator
|
|
236
|
+
|
|
237
|
+
# Machine-readable
|
|
238
|
+
unity diagnose accelerator --json
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
A working Accelerator and a broken one produce identical output apart from wall-clock time. This is the command that tells them apart. It reports four sections:
|
|
242
|
+
|
|
243
|
+
- **Resolved configuration** — the endpoint and its source (`env` / `settings` / `none`), and whether the Accelerator was disabled. This command does not accept `--accelerator` or `--no-accelerator` (both are scoped to `run` / `test` / `build`), so it reports what the env var and the persisted setting resolve to — the endpoint any command would start from, before a one-shot override.
|
|
244
|
+
- **Environment variables** — `UNITY_ACCELERATOR` by **presence only**, never by value (a host and port is infrastructure detail a support paste should not carry). The character length is included, enough to tell "set" from "set to empty".
|
|
245
|
+
- **Project cache server** — the project's `m_CacheServerMode` (as Unity's own inspector labels it) and `m_CacheServerEndpoint`, and whether they agree with the resolved endpoint. There is no "void case": a project's cache-server mode never makes an injected endpoint moot — command-line flags always win — so the report states a mismatch as a fact without claiming which side the Editor uses.
|
|
246
|
+
- **Reachability** — a raw TCP connect with a 5-second timeout, reporting elapsed time and a familiar error code on failure (`ENOTFOUND`, `ECONNREFUSED`, `ETIMEDOUT`, …). A successful connect proves the port is reachable, **not** that an import will get a cache hit, and the report says so.
|
|
247
|
+
|
|
248
|
+
**An unreachable endpoint is a reported row, not a command failure** — the command exits `0` having successfully diagnosed a broken endpoint. `--format json` emits the standard envelope; every other format writes the plaintext report raw to stdout so it survives a pipe or a CI log. `--quiet` is honoured.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
### Environment
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# Show environment paths
|
|
256
|
+
unity env --format json
|
|
257
|
+
|
|
258
|
+
# Returns: user data path, editor install path, download cache path, config path, CLI version, resolved proxy
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
### Version — machine-readable version object
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Bare version string (backward compatible, unchanged)
|
|
267
|
+
unity --version
|
|
268
|
+
|
|
269
|
+
# Structured version object
|
|
270
|
+
unity version --format json
|
|
271
|
+
|
|
272
|
+
# The --version flag also honors an explicit format set before it
|
|
273
|
+
unity --format json --version
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
`unity version` reports the CLI version, release channel (`stable`, `beta`, …), commit, platform, architecture, and runtime — the same version fact `env` and `doctor` carry, as one parseable object. It honors `--format` (`human`, `json`, `tsv`, `ndjson`); human output is the bare version string.
|
|
277
|
+
|
|
278
|
+
A bare `unity --version` still prints only the version string, so scripts that parse it are unaffected. The `--version` flag switches to the structured object only when an explicit machine format is given *before* it (`unity --json --version`, `unity --format json --version`, or `UNITY_FORMAT=json unity --version`) — the flag terminates parsing, so a trailing format after `--version` is not seen. For order-independent machine output, prefer the `unity version` subcommand.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
### Cache
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# Show cache location and size
|
|
286
|
+
unity cache info --format json
|
|
287
|
+
|
|
288
|
+
# Clear download cache
|
|
289
|
+
unity cache clean --yes
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
### Cache key — deterministic key for CI cache steps
|
|
295
|
+
|
|
296
|
+
`unity cache key` prints one hash derived from the inputs that actually invalidate a project's build cache: the editor version, the resolved package set, and (optionally) the build target. Use it as the `key:` of a CI cache step instead of hand-rolling the hashing.
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# Print the key for the project in the current directory
|
|
300
|
+
unity cache key
|
|
301
|
+
|
|
302
|
+
# Scope it to a build target — a Library/ folder is platform-specific
|
|
303
|
+
unity cache key --target Android
|
|
304
|
+
|
|
305
|
+
# Any project path
|
|
306
|
+
unity cache key ./MyProject
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Whenever stdout is not an interactive terminal — a pipe, a redirect, or any CI runner — the key is the only thing written to it, so it drops straight into a shell substitution or a workflow expression. (On an interactive colour terminal the CLI's usual one-line banner still prints above it, as it does for every command; `--quiet` suppresses that.)
|
|
310
|
+
|
|
311
|
+
Pass the project path if the workflow's working directory isn't the project:
|
|
312
|
+
|
|
313
|
+
```yaml
|
|
314
|
+
- id: cachekey
|
|
315
|
+
run: echo "key=$(unity cache key MyProject --target Android)" >> "$GITHUB_OUTPUT"
|
|
316
|
+
- uses: actions/cache@v4
|
|
317
|
+
with:
|
|
318
|
+
path: MyProject/Library
|
|
319
|
+
key: Library-${{ steps.cachekey.outputs.key }}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
What moves the key, and what doesn't:
|
|
323
|
+
|
|
324
|
+
- **Changes** when the editor version (`ProjectSettings/ProjectVersion.txt`), the package set (`Packages/packages-lock.json`, falling back to `Packages/manifest.json`), or `--target` changes.
|
|
325
|
+
- **Does not change** for unrelated edits — scenes, scripts, assets, or project settings other than the version file.
|
|
326
|
+
- **Is identical across machines and operating systems** for the same inputs. Line endings and a UTF-8 BOM are normalized before hashing, so a Windows checkout with `core.autocrlf` and a Linux one agree. No paths, usernames, or timestamps enter the hash.
|
|
327
|
+
|
|
328
|
+
`--format json` returns the key plus each component's raw value and hash, so one invocation can build a layered key with fallback levels:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
unity cache key --target Android --format json
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
`--component <editor|packages|target>` prints just one component's hash for the fallback levels themselves. Under `--format json` it also sets `data.key` to that component, so `jq -r .data.key` means the same thing either way:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# Restore any cache built for this editor, whatever the packages were
|
|
338
|
+
unity cache key --component editor
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Runs without an editor and without network access. Exit 2 on an unknown `--target` or `--component` (a silently-accepted typo would produce a key nothing else matches); exit 6 when the directory isn't a Unity project. A project with neither package file still emits a key, with a warning that it doesn't cover the package set.
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
### Analytics — usage/telemetry consent
|
|
346
|
+
|
|
347
|
+
The CLI never asks. On a new install, a user who never chose is **opted in**, and the first run of a release build prints a one-line notice on stderr saying what is collected, with a link that explains how to turn it off. A choice already made is always kept: `unity analytics opt-out`, an answer to an older CLI's first-run prompt, or the Hub's analytics setting. `DO_NOT_TRACK` (any value but empty, `0` or `false`) also keeps a user who never chose opted out, and so does a machine that already had Hub or CLI data before this default (an existing install).
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
# Show current consent status
|
|
351
|
+
unity analytics status
|
|
352
|
+
unity analytics status --format json
|
|
353
|
+
|
|
354
|
+
# Opt in to anonymous usage data collection
|
|
355
|
+
unity analytics opt-in
|
|
356
|
+
|
|
357
|
+
# Opt out
|
|
358
|
+
unity analytics opt-out
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
Consent is stored in the shared Hub privacy preferences, so opting out in the CLI also opts out in Hub, and vice versa. When opted **in**, the CLI records which commands run (registered command names only — never your arguments, paths, or project names), editor uninstalls, project open/create (editor version and template id only), CLI self-update/uninstall outcomes, `unity shell` and `unity mcp` session usage, and `unity doctor` / `unity bug` results. When opted out, no events are sent.
|
|
362
|
+
|
|
363
|
+
Separately from analytics, the CLI reports **anonymous crashes and errors** via Sentry to help fix bugs (no IP address or hostname; home-directory paths and token-like values scrubbed before send), aligned with the Unity Hub. Opting in to analytics additionally attaches an anonymized machine id so crash-free-user rates can be computed; opted-out users stay fully anonymous. Set `UNITY_NO_CRASH_REPORT` to disable crash reporting entirely. Turning off "Send crash reports" in the Unity Hub's settings does the same for the CLI; only an explicit off counts, so a machine without the Hub keeps reporting.
|
|
364
|
+
|
|
365
|
+
Separately again, every run (CI, an agent, a machine `--format` included) sends one anonymous `cli telemetry` usage ping, so total CLI usage can be counted. It is not a measure of who opted in and carries no user, machine, or session identifier (a fresh random id per invocation, never persisted) and no consent state — just which Unity tool sent it, the CLI version, and whether the run looks like CI. Any one of these stops it:
|
|
366
|
+
|
|
367
|
+
- explicitly turning analytics off (`unity analytics opt-out`, an opt-out answered at an older CLI's prompt, or turning it off in the Hub while signed in to the Hub; a Hub opt-out made while signed out is not visible to the CLI and does not stop it);
|
|
368
|
+
- `DO_NOT_TRACK` set to any value but empty, `0` or `false` ([consoledonottrack.com](https://consoledonottrack.com));
|
|
369
|
+
- `UNITY_NO_CLI_INVOKED_TELEMETRY` set to any value.
|
|
370
|
+
|
|
371
|
+
`DO_NOT_TRACK` also stops the upload of opt-in usage data, even when you opted in. Usage data never holds a command for long: on a slow or unreachable network the CLI gives up on it after half a second. `unity analytics status` says what is collected, links the privacy policy, and reports whether the ping is on and why it is off. None of these settings stop the licensing records `unity license activate` files.
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
### Changelog
|
|
376
|
+
|
|
377
|
+
Show the release notes for the installed CLI version, or with `--target`, for another release. `--target latest` shows the newest release on your channel, the one `unity self-update` would install:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
unity changelog
|
|
381
|
+
unity changelog --target 1.0.0-beta.10
|
|
382
|
+
unity changelog --target latest
|
|
383
|
+
unity changelog --format json
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
When no notes are published for that version, the command exits 6, and `--format json` reports `CHANGELOG_NOT_FOUND` in `errors[0].code`. A download that fails reports `ERR_NETWORK` (no connection) or `COMMAND_FAILED` (an HTTP error) instead.
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
### Docs — version-matched Unity documentation
|
|
391
|
+
|
|
392
|
+
Open the docs.unity.com page for a class or topic in the default browser,
|
|
393
|
+
matched to the editor version of the project you are in:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
unity docs # the Engine documentation home
|
|
397
|
+
unity docs GameObject # scripting API reference
|
|
398
|
+
unity docs GameObject.activeSelf # a member page
|
|
399
|
+
unity docs --manual Coroutines # search the manual
|
|
400
|
+
unity docs --search "physics raycast" # the documentation search results
|
|
401
|
+
unity docs --package com.unity.2d.sprite # a package manual, at the version your project uses
|
|
402
|
+
unity docs --url Rigidbody.AddForce # print the URL, do not open it
|
|
403
|
+
unity docs --cli use-unity-cli # the Unity CLI's own documentation
|
|
404
|
+
unity docs --hub project-create # the Unity Hub documentation
|
|
405
|
+
unity docs --cloud developer-data/collection-settings # Unity Cloud
|
|
406
|
+
unity docs --content GameObject # print the page's Markdown, do not open it
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
The version is `--editor-version`, then the current project's
|
|
410
|
+
`ProjectSettings/ProjectVersion.txt` (no editor has to be installed), then the
|
|
411
|
+
newest version docs.unity.com hosts. `--editor-version` accepts a full version
|
|
412
|
+
(`6000.0.26f1`) or a version branch (`6000.0`); an unparseable value is a usage
|
|
413
|
+
failure rather than a silent fallback. A version the site doesn't host uses the
|
|
414
|
+
nearest hosted version below it, or the oldest hosted one, with a one-line
|
|
415
|
+
notice on stderr.
|
|
416
|
+
|
|
417
|
+
A scripting API topic is looked up in the site's page index (the same one
|
|
418
|
+
`docs toc` lists): a qualified name (`UnityEngine.GameObject`) matches exactly,
|
|
419
|
+
a bare class name or `Class.member` matches the page whose path ends with it,
|
|
420
|
+
preferring `UnityEngine`, then `UnityEditor`, then the shortest path. A name two
|
|
421
|
+
pages tie on goes to search rather than a guess. The lookup takes at most 5
|
|
422
|
+
seconds and never fails the command: offline, a qualified name is built
|
|
423
|
+
directly for the version you asked for, and anything else goes to search. A
|
|
424
|
+
trailing `.html`, a `(...)` signature and the old `Class-member` page form are
|
|
425
|
+
all accepted. `--manual` always searches, since the new Manual pages have no
|
|
426
|
+
mapping from the old page names.
|
|
427
|
+
|
|
428
|
+
When the Editor's Documentation module is installed for the version `docs`
|
|
429
|
+
resolves (that exact Editor first, then the others on its line, newest first),
|
|
430
|
+
opening a scripting API topic in the browser opens the local page instead, a
|
|
431
|
+
`file://` URL with no network. `--online` skips the local copy. A printed
|
|
432
|
+
address (`--url`) is always the docs.unity.com page, so a citation never
|
|
433
|
+
carries a machine-local path. A topic the local copy doesn't have, a tie, or
|
|
434
|
+
no version at all goes online as before, and so does every run under WSL,
|
|
435
|
+
whose Windows browser can't read a Linux path.
|
|
436
|
+
|
|
437
|
+
**For an agent, `--url` is the useful mode:** it prints the resolved address to
|
|
438
|
+
stdout and opens nothing, so it composes into a citation or a review comment.
|
|
439
|
+
`--format json` carries the same address plus `version` (the docs version in the
|
|
440
|
+
URL, `null` for search or a home page), `requestedVersion` (the one asked for),
|
|
441
|
+
`source` (`online`, or `local` for a page opened from the Documentation module,
|
|
442
|
+
which also carries `path` and `editorVersion`) and `resolvedBy`: `index`,
|
|
443
|
+
`direct`, `search` or `local`.
|
|
444
|
+
|
|
445
|
+
#### Package manuals: `docs --package`
|
|
446
|
+
|
|
447
|
+
`unity docs --package <name>` opens a package's manual on docs.unity3d.com,
|
|
448
|
+
where package manuals live, for the package version your project uses. The
|
|
449
|
+
version is the one in the project's `Packages/packages-lock.json`; a package
|
|
450
|
+
built into the Editor (`com.unity.2d.sprite`, `com.unity.2d.tilemap`) uses its
|
|
451
|
+
one manual version; anything else uses the newest release on the Unity
|
|
452
|
+
registry (also for a package the project takes from a Git URL or a local
|
|
453
|
+
folder). A name the registry doesn't list fails with `DOCS_PACKAGE_UNKNOWN`
|
|
454
|
+
instead of opening a missing page, and a registry that
|
|
455
|
+
can't be reached fails with `NETWORK_UNREACHABLE`. `--package` takes no topic and
|
|
456
|
+
can't be combined with another documentation set, `--search` or
|
|
457
|
+
`--editor-version`. `--url` prints the address; `--format json` adds `package`,
|
|
458
|
+
`packageVersion` (the full version, `null` for a built-in package outside a
|
|
459
|
+
project) and `resolvedBy`: `project`, `editor` or `registry`.
|
|
460
|
+
|
|
461
|
+
When the project has the package's own docs (`Packages/<name>/Documentation~`,
|
|
462
|
+
else the cache entry under `Library/PackageCache` at the locked version, else
|
|
463
|
+
the newest one), `docs --package` opens that local Markdown page instead, offline
|
|
464
|
+
and without asking the registry. `--online` skips it, and `--url` always prints
|
|
465
|
+
the online manual. JSON for a local page says `resolvedBy: local`,
|
|
466
|
+
`source: local` and the file's `path`, with `packageVersion` from the package's
|
|
467
|
+
`package.json`.
|
|
468
|
+
|
|
469
|
+
#### Documentation sets outside the Engine docs
|
|
470
|
+
|
|
471
|
+
`--cli`, `--hub` and `--cloud` look the topic up in another documentation set
|
|
472
|
+
on docs.unity.com instead of the Engine documentation. With no topic, each opens
|
|
473
|
+
its set's home page:
|
|
474
|
+
|
|
475
|
+
|Flag|Documentation|
|
|
476
|
+
|---|---|
|
|
477
|
+
|*(default)*|Engine scripting API reference, version-matched|
|
|
478
|
+
|`--manual`|Engine manual, through search|
|
|
479
|
+
|`--cli`|The Unity CLI|
|
|
480
|
+
|`--hub`|The Unity Hub|
|
|
481
|
+
|`--cloud`|Unity Cloud|
|
|
482
|
+
|
|
483
|
+
Those pages are not versioned by editor, so they take no version: `--editor-version`
|
|
484
|
+
alongside one of them is a usage failure rather than a value that gets quietly
|
|
485
|
+
dropped. The four selectors are mutually exclusive, and passing two is a usage
|
|
486
|
+
failure too rather than one of them silently winning.
|
|
487
|
+
|
|
488
|
+
Page names on these sets are lowercase and hyphenated, and may carry more than
|
|
489
|
+
one segment (`developer-data/collection-settings`). Anything else — a phrase, or
|
|
490
|
+
a name in the wrong case — falls back to the platform's search page, the same
|
|
491
|
+
fallback rule the Editor sections use.
|
|
492
|
+
|
|
493
|
+
#### Reading a page as Markdown: `docs --content`
|
|
494
|
+
|
|
495
|
+
`unity docs <topic> --content` prints the page's Markdown to stdout instead of
|
|
496
|
+
opening a browser, which an agent reads far better than HTML. With
|
|
497
|
+
`--format json` the Markdown is wrapped with `url`, `markdownUrl`, `version`
|
|
498
|
+
and `source` (`online`, `cache` for a page read from the offline cache, or
|
|
499
|
+
`local` for a package). It cannot be combined with
|
|
500
|
+
`--url`. A topic that only resolves to a search, and `--manual`, have no page
|
|
501
|
+
to print and fail. A package topic (`com.unity.*`) has no Markdown online yet:
|
|
502
|
+
it prints the package's local `Documentation~` Markdown from the project's
|
|
503
|
+
`Packages` or `Library/PackageCache`, or says plainly that none exists.
|
|
504
|
+
|
|
505
|
+
#### Listing the pages: `docs toc`
|
|
506
|
+
|
|
507
|
+
`unity docs toc` lists every page of a documentation section on docs.unity.com,
|
|
508
|
+
so an agent can pick a real page instead of guessing its name:
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
unity docs toc --format json # scripting API reference
|
|
512
|
+
unity docs toc --manual --format json # the manual
|
|
513
|
+
unity docs toc --editor-version 6000.0 --format ndjson # one page per line
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
The version is `--editor-version`, then the project's `ProjectVersion.txt`, then
|
|
517
|
+
the newest version docs.unity.com hosts. A version the site doesn't host is
|
|
518
|
+
listed as the nearest hosted version below it, or the oldest hosted one if there
|
|
519
|
+
is none, with a one-line notice on stderr.
|
|
520
|
+
|
|
521
|
+
Each entry has a `path` under the section (`unityengine/gameobject/activeself`)
|
|
522
|
+
and its absolute `url`. The pages come from the site's sitemaps, which carry no
|
|
523
|
+
titles. The json envelope's `data` is `{version, requestedVersion, section,
|
|
524
|
+
entries}`: `version` is the one listed, `requestedVersion` the one asked for
|
|
525
|
+
(null when none was). TSV and the human table show the path and URL.
|
|
526
|
+
|
|
527
|
+
The index is downloaded once a day, then read from a local cache. No
|
|
528
|
+
connection is `NETWORK_UNREACHABLE` (exit 7); a server error is
|
|
529
|
+
`DOCS_TOC_FETCH_FAILED`, and an index that can't be read is `DOCS_TOC_INVALID`.
|
|
530
|
+
`--cli`, `--hub` and `--cloud` publish no index, so `toc` doesn't take them.
|
|
531
|
+
|
|
532
|
+
#### Offline docs: `docs cache`
|
|
533
|
+
|
|
534
|
+
`unity docs cache add` downloads a version's documentation as Markdown so it can
|
|
535
|
+
be read with no connection. It stores the manual by default; `--api` adds the
|
|
536
|
+
scripting API reference too (about 96,000 pages, so it takes a while). The
|
|
537
|
+
version is `--editor-version`, then the project's, then the newest hosted one,
|
|
538
|
+
as for `docs toc`.
|
|
539
|
+
|
|
540
|
+
```bash
|
|
541
|
+
unity docs cache add # the manual, this project's version
|
|
542
|
+
unity docs cache add --api --editor-version 6000.0 # the manual and the scripting API
|
|
543
|
+
unity docs cache --format json # what is cached
|
|
544
|
+
unity docs cache clear --editor-version 6000.0 --yes # delete one version
|
|
545
|
+
unity docs cache clear --yes # delete every version
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
Once a version is cached, `docs --content` reads its pages from the cache
|
|
549
|
+
before going online (`source: cache` in json), and `docs toc` and topic
|
|
550
|
+
resolution use its page listing when docs.unity.com can't be reached. Opening a
|
|
551
|
+
page in the browser still needs the network. Every page `docs --content`
|
|
552
|
+
fetches online is cached too.
|
|
553
|
+
|
|
554
|
+
Each page is a file, `<version>/<section>/<path>.md`, under the `docs` folder of
|
|
555
|
+
the download cache that `unity cache info` reports, so an agent can also read
|
|
556
|
+
the files directly; `add` prints the folder. `unity cache clean` deletes it
|
|
557
|
+
with everything else.
|
|
558
|
+
|
|
559
|
+
`add` is resumable: a run that loses pages fails with `DOCS_CACHE_INCOMPLETE`,
|
|
560
|
+
and running the same command again downloads only the rest, leaving any
|
|
561
|
+
section that already finished alone. Once every section it covers has
|
|
562
|
+
finished, running it again downloads them afresh. Listed pages with no Markdown are skipped
|
|
563
|
+
and counted as `missing`. With no connection to the index it is
|
|
564
|
+
`NETWORK_UNREACHABLE` (exit 7). `list` reports `version`, `sections`, `pages`,
|
|
565
|
+
`sizeBytes` and `fetchedAt` per version. `clear` asks first; with no terminal
|
|
566
|
+
or under `--non-interactive` it needs `--yes` (`DOCS_CACHE_CLEAR_REQUIRES_YES`,
|
|
567
|
+
exit 2). The lowercase word `cache` is the subcommand, so for the `Cache` class
|
|
568
|
+
write `unity docs Cache` or `unity docs UnityEngine.Cache`.
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
### Language
|
|
573
|
+
|
|
574
|
+
```bash
|
|
575
|
+
# Show current language and available options
|
|
576
|
+
unity language
|
|
577
|
+
|
|
578
|
+
# Set language by code
|
|
579
|
+
unity language --set en
|
|
580
|
+
unity language --set ja
|
|
581
|
+
unity language --set zh-hans
|
|
582
|
+
|
|
583
|
+
# Alias
|
|
584
|
+
unity lang --set ko
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
On a TTY with no flags, shows an interactive selection prompt. `--set` accepts common spellings of a language code — BCP-47 (`ja-JP`), locale (`ja_JP`), a bare language (`ja`), or a bare region (`jp`) — and resolves them case-insensitively when the match is unambiguous (`zh` still asks you to pick `zh_cn` or `zh_tw`). Display names and ordering come from the shared Hub language catalog. The regional variants Spanish (Latin America), French (Canada), and Portuguese (Portugal) are no longer offered; Spanish, French, and Portuguese (Brazil) remain.
|
|
588
|
+
|
|
589
|
+
---
|
|
590
|
+
|
|
591
|
+
### Completion — shell tab completion
|
|
592
|
+
|
|
593
|
+
Generate and install shell completion scripts:
|
|
594
|
+
|
|
595
|
+
```bash
|
|
596
|
+
# Supported shells: bash, zsh, fish, powershell
|
|
597
|
+
unity completion bash
|
|
598
|
+
unity completion zsh
|
|
599
|
+
unity completion fish
|
|
600
|
+
unity completion powershell
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
---
|
|
604
|
+
|
|
605
|
+
### Bug — report a bug
|
|
606
|
+
|
|
607
|
+
Interactive bug reporter that collects system info and recent logs, then submits to Unity:
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
# Interactive — prompts for each field
|
|
611
|
+
unity bug
|
|
612
|
+
|
|
613
|
+
# Non-interactive — supply the report through flags (works from scripts, CI, piped shells)
|
|
614
|
+
unity bug \
|
|
615
|
+
--title "Editor crashes on project open" \
|
|
616
|
+
--description "Opening MyGame hard-crashes the editor." \
|
|
617
|
+
--steps "Open the CLI" --steps "Run unity open MyGame" --steps "Editor window closes" \
|
|
618
|
+
--reproducibility always \
|
|
619
|
+
--area editor \
|
|
620
|
+
--email you@example.com \
|
|
621
|
+
--attachments ./crash.log ./notes.txt \
|
|
622
|
+
--share-project .
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
Prompts for title, description, email, reproducibility level, and which area the issue is in. As of `0.1.0-beta.8` it collects the same diagnostic system information as the Unity Hub bug reporter (including GPU details).
|
|
626
|
+
|
|
627
|
+
The report can also be supplied entirely through flags — `--title`, `--description`, `--steps` (repeatable, one line per value), `--reproducibility <first-time|sometimes|always>`, and `--email` (defaults to your Unity account email when signed in; otherwise required). On a terminal, any flags you pass skip their prompts and the remaining fields still ask; a non-interactive run submits without prompting. A non-interactive run with missing or invalid fields fails fast with a usage error (exit 2) listing the exact flags to add.
|
|
628
|
+
|
|
629
|
+
Use `--area <cli|pipeline-package|editor|licensing|ugs|plastic|ai|transform|not-sure>` to say which part of Unity the issue is in: the CLI itself, the connection to the Editor or the Pipeline package (`com.unity.pipeline`), the Editor or your project, licensing and signing in, or one of the plugins (`ugs`, `plastic`, `ai`, `transform`). Pass it whenever you know, because a failure that surfaces in CLI output is otherwise easy to misroute as a CLI bug when the Editor or the Pipeline package is at fault. It's optional and never blocks a report: pass `not-sure` when you don't know, or leave it out. On a terminal without `--area`, the reporter asks, with "Not sure" preselected; a non-interactive run without it submits with no area, the same report it sent before the flag existed. An unknown value is a usage error (exit 2). The answer is sent with the report as an `Issue area:` line in the report text, which is what triage sees. On a terminal, a plugin is offered as an area only while it is installed. A plugin area names the plugin and its installed version, and attaches the newest `.log` and `.txt` files from the log directories the plugin registry lists for it, redacted and size-capped like the other logs. Every report also lists the plugins installed on the machine, with their versions, as an `Installed plugins:` line.
|
|
630
|
+
|
|
631
|
+
Use `--attachments <paths...>` (repeatable) to attach extra files — for example a crash log or a zipped copy of a subset of assets. Each path must be an existing, readable file; a folder is rejected (zip it yourself first), and a missing or unreadable path fails fast with a usage error (exit 2) naming the offending path.
|
|
632
|
+
|
|
633
|
+
Use `--share-project <path>` (use `.` for the current directory) to attach a copy of the Unity project the bug is about — the same stripped-project packaging the Editor's bug reporter uses. It sends the source folders plus a slimmed `Library`, excluding the regenerable caches and build output (`Library` caches, `Temp`, `Build`, `Logs`, VCS/IDE metadata, `MemoryCaptures`, `CrashReports`), so you don't have to zip the project yourself. A path that isn't a Unity project fails fast with exit 2. The archive is streamed from disk during upload, so there's no size limit — even a multi-gigabyte project copy uploads without being buffered in memory.
|
|
634
|
+
|
|
635
|
+
Interactively, when you don't pass `--attachments` or `--share-project`, the reporter asks whether to attach files and whether to include a project copy. When the area answer is `editor` or `pipeline-package`, the project-copy question first explains why a copy helps with those issues; it still defaults to no, and nothing is shared unless you answer yes. Everything — attachments and the project copy — is bundled into the same archive as the auto-collected logs.
|
|
636
|
+
|
|
637
|
+
#### `unity bug mcp`: check for known issues before filing
|
|
638
|
+
|
|
639
|
+
Before filing a report, add Unity's Issue Tracker MCP server to an AI assistant so it can search for known issues on your behalf:
|
|
640
|
+
|
|
641
|
+
```bash
|
|
642
|
+
unity bug mcp claude
|
|
643
|
+
unity bug mcp --list
|
|
644
|
+
unity bug mcp cursor --local
|
|
645
|
+
unity bug mcp claude --dry-run
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
`unity bug mcp [client]` is exactly `unity mcp configure [client] --server issue-tracker`. It delegates to the same `mcp configure` execution with the target server fixed, so it accepts the same `client` argument and the same `--list`, `--local`, `--yes`, and `--dry-run` flags (no `--server` flag here, since the server is already fixed). See the MCP configuration section in `integration-advanced.md` for the full client list, config paths, and what each flag does; `unity bug --help` also points here. This adds no new required prompt to the bug-report wizard, since it's a separate, optional subcommand, and the interactive wizard prints a one-line reminder about it before asking its own questions.
|
|
649
|
+
|
|
650
|
+
---
|
|
651
|
+
|
|
652
|
+
### Self-update — update the CLI itself
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
# Check for available updates
|
|
656
|
+
unity self-update --check --format json
|
|
657
|
+
|
|
658
|
+
# Show changelog for the new version
|
|
659
|
+
unity self-update --changelog
|
|
660
|
+
|
|
661
|
+
# Update (interactive confirmation)
|
|
662
|
+
unity self-update
|
|
663
|
+
|
|
664
|
+
# Update without prompts
|
|
665
|
+
unity self-update --yes
|
|
666
|
+
|
|
667
|
+
# Install a specific version (v0.2.0 works too; latest is the same as no --target)
|
|
668
|
+
unity self-update --target 0.2.0
|
|
669
|
+
|
|
670
|
+
# Select update channel (stable or beta)
|
|
671
|
+
unity self-update --channel beta
|
|
672
|
+
|
|
673
|
+
# Dry-run: show what would change
|
|
674
|
+
unity self-update --dry-run
|
|
675
|
+
|
|
676
|
+
# Roll back to the most recent previous version
|
|
677
|
+
unity self-update --rollback
|
|
678
|
+
|
|
679
|
+
# Roll back to a specific kept version
|
|
680
|
+
unity self-update --rollback 0.1.0
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
Each update keeps the binary it replaces, so `--rollback` has something to go back to. The last 3 versions are kept (the oldest is dropped), and `--rollback` with no value restores the most recent one. Pass a version to restore a specific kept one; if it isn't kept, the error lists the versions that are. On macOS and Linux a rollback uses up the backup it restores, so running `--rollback` again goes one version further back; on Windows the swap finishes after the command exits, so every backup stays. Set `UNITY_CLI_ROLLBACK_KEEP` (1 to 10) to keep more or fewer.
|
|
684
|
+
|
|
685
|
+
`unity self-update` detects how the CLI was installed and updates accordingly (`unity upgrade` is still accepted as an alias):
|
|
686
|
+
|
|
687
|
+
- **`curl | sh` install** — keeps updating itself in place.
|
|
688
|
+
- **Linux AppImage** — updates in place: downloads the new `.AppImage` artifact, verifies its checksum against the release manifest, and atomically replaces the AppImage you launched (`--rollback` restores the previous one). The embedded zsync update info is preserved, so external updaters (AppImageUpdate, Gear Lever) keep working.
|
|
689
|
+
- **Package-manager install** — points you at the owning manager instead of replacing the binary. The `.deb` and `.rpm` packages are published to Unity's apt and rpm repositories on every beta and GA release (rpm packages are GPG-signed), so a package-managed install stays current through the system package manager: `sudo apt update && sudo apt upgrade unity-cli` on Debian/Ubuntu, `sudo dnf upgrade unity-cli` on Fedora/RHEL.
|
|
690
|
+
|
|
691
|
+
Downloads go through the CLI’s regular download engine: an interrupted download (a dropped connection, a closed lid, a Ctrl-C) resumes from where it left off on the next `unity self-update`, and a Brotli-compressed artifact is preferred when the release publishes one — verified against its own checksum and again after decompression. A release with no compressed artifact for your platform falls back to the raw download.
|
|
692
|
+
|
|
693
|
+
`--check`, `--changelog`, and `--dry-run` work everywhere. When no notes are published for the version, `--changelog` exits 6, and `--format json` reports `CHANGELOG_NOT_FOUND` in `errors[0].code`. The background "update available" notice is package-manager-aware: when the release manifest says your install's package manager already carries the new version, the notice suggests that manager's exact upgrade command instead of `unity self-update`; installs whose manager doesn't carry the release yet stay quiet.
|
|
694
|
+
|
|
695
|
+
The same background check also warns when a self-installed `unity` and a Homebrew-managed one are **both** on `PATH` — a state where `which unity` keeps resolving to the self-installed copy while `brew upgrade` updates the other, so the two silently drift apart. The notice points at `unity self-uninstall -y` to remove the self-installed copy so Homebrew is the only one managing updates going forward.
|
|
696
|
+
|
|
697
|
+
---
|
|
698
|
+
|
|
699
|
+
### Self-uninstall — remove the CLI
|
|
700
|
+
|
|
701
|
+
```bash
|
|
702
|
+
# Uninstall the CLI (interactive confirmation)
|
|
703
|
+
unity self-uninstall
|
|
704
|
+
|
|
705
|
+
# Uninstall without prompts
|
|
706
|
+
unity self-uninstall --yes
|
|
707
|
+
|
|
708
|
+
# Also remove config and data files
|
|
709
|
+
unity self-uninstall --purge --yes
|
|
710
|
+
|
|
711
|
+
# Dry-run: show what would be removed
|
|
712
|
+
unity self-uninstall --dry-run
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
> **`unity implode` was removed** in `0.1.0-beta.8` (it was previously a deprecated alias). Use `unity self-uninstall`.
|
|
716
|
+
|
|
717
|
+
---
|
|
718
|
+
|