@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,37 @@
|
|
|
1
|
+
## ActionBase properties
|
|
2
|
+
|
|
3
|
+
### `Id`
|
|
4
|
+
|
|
5
|
+
```csharp
|
|
6
|
+
public abstract int Id { get; }
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
A unique integer identifier for an action type. Pass this to the `RuleBlock(int actionId)` constructor.
|
|
10
|
+
|
|
11
|
+
## RuleBlock constructors
|
|
12
|
+
|
|
13
|
+
The RuleBlock API reference contains the following constructors.
|
|
14
|
+
|
|
15
|
+
### `RuleBlock(int actionId)`
|
|
16
|
+
|
|
17
|
+
This constructor creates a RuleBlock that will execute the action identified by `actionId`. The action instance is created lazily on first access.
|
|
18
|
+
|
|
19
|
+
```csharp
|
|
20
|
+
public RuleBlock(int actionId)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
| Parameter | Type | Default | Description |
|
|
24
|
+
|-----------|------|---------|-------------|
|
|
25
|
+
| `actionId` | int | required | The ID of the action this RuleBlock will trigger. Use `ActionBase.Id` to obtain this value from an action instance. |
|
|
26
|
+
|
|
27
|
+
## RuleBlock properties
|
|
28
|
+
|
|
29
|
+
The RuleBlock API reference contains the following properties.
|
|
30
|
+
|
|
31
|
+
### `IsEnabled`
|
|
32
|
+
|
|
33
|
+
```csharp
|
|
34
|
+
public bool IsEnabled { get; set; }
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Controls whether this block is active within its Rule. When `false`, the block is skipped during execution.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
## Contents
|
|
2
|
+
- [RuleSet methods](#ruleset-methods) — `GetRule`, `GetRuleIndex`, `RemoveRuleAt`, `RemoveRule`, `InsertRule`, `AppendRule`, `IsValid`
|
|
3
|
+
- [RuleSet properties](#ruleset-properties) — `RulesCount`
|
|
4
|
+
- [RuleSet utility functions](#ruleset-utility-functions) — `RunRuleSet`
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## RuleSet methods
|
|
9
|
+
|
|
10
|
+
The RuleSet API reference contains the following methods.
|
|
11
|
+
|
|
12
|
+
### `GetRule`
|
|
13
|
+
|
|
14
|
+
This method retrieves the `Rule` at the specified index.
|
|
15
|
+
|
|
16
|
+
```csharp
|
|
17
|
+
public Rule GetRule(int i)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`GetRule` accepts the following parameter.
|
|
21
|
+
|
|
22
|
+
| Parameter | Type | Default | Description |
|
|
23
|
+
|-----------|------|---------|-------------|
|
|
24
|
+
| `i` | int | required | Zero-based index of the rule to retrieve. |
|
|
25
|
+
|
|
26
|
+
This method returns the `Rule` at the given index.
|
|
27
|
+
|
|
28
|
+
### `GetRuleIndex`
|
|
29
|
+
|
|
30
|
+
This method returns the index of the given `Rule` within the RuleSet. Returns `-1` and logs an error if the RuleSet is currently running.
|
|
31
|
+
|
|
32
|
+
```csharp
|
|
33
|
+
public int GetRuleIndex(Rule rule)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`GetRuleIndex` accepts the following parameter.
|
|
37
|
+
|
|
38
|
+
| Parameter | Type | Default | Description |
|
|
39
|
+
|-----------|------|---------|-------------|
|
|
40
|
+
| `rule` | Rule | required | The `Rule` whose index to find. |
|
|
41
|
+
|
|
42
|
+
This method returns an `int` index, or `-1` if the RuleSet is running or the rule is not found.
|
|
43
|
+
|
|
44
|
+
### `RemoveRuleAt`
|
|
45
|
+
|
|
46
|
+
This method removes the rule at the specified index. Has no effect and logs an error if the RuleSet is currently running.
|
|
47
|
+
|
|
48
|
+
```csharp
|
|
49
|
+
public void RemoveRuleAt(int index)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`RemoveRuleAt` accepts the following parameter.
|
|
53
|
+
|
|
54
|
+
| Parameter | Type | Default | Description |
|
|
55
|
+
|-----------|------|---------|-------------|
|
|
56
|
+
| `index` | int | required | Zero-based index of the rule to remove. |
|
|
57
|
+
|
|
58
|
+
### `RemoveRule`
|
|
59
|
+
|
|
60
|
+
This method removes a specific `Rule` instance from the RuleSet. Has no effect and logs an error if the RuleSet is currently running.
|
|
61
|
+
|
|
62
|
+
```csharp
|
|
63
|
+
public void RemoveRule(Rule rule)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`RemoveRule` accepts the following parameter.
|
|
67
|
+
|
|
68
|
+
| Parameter | Type | Default | Description |
|
|
69
|
+
|-----------|------|---------|-------------|
|
|
70
|
+
| `rule` | Rule | required | The `Rule` instance to remove. |
|
|
71
|
+
|
|
72
|
+
### `InsertRule`
|
|
73
|
+
|
|
74
|
+
This method inserts a `Rule` at the specified index, shifting subsequent rules down. Has no effect and logs an error if the RuleSet is currently running.
|
|
75
|
+
|
|
76
|
+
```csharp
|
|
77
|
+
public void InsertRule(int index, Rule rule, bool notify)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`InsertRule` accepts the following parameters.
|
|
81
|
+
|
|
82
|
+
| Parameter | Type | Default | Description |
|
|
83
|
+
|-----------|------|---------|-------------|
|
|
84
|
+
| `index` | int | required | Zero-based position at which to insert the rule. |
|
|
85
|
+
| `rule` | Rule | required | The `Rule` instance to insert. |
|
|
86
|
+
| `notify` | bool | required | When `true`, notifies the UI that the RuleSet has changed. |
|
|
87
|
+
|
|
88
|
+
### `AppendRule`
|
|
89
|
+
|
|
90
|
+
This method adds a `Rule` to the end of the RuleSet. Has no effect and logs an error if the RuleSet is currently running.
|
|
91
|
+
|
|
92
|
+
```csharp
|
|
93
|
+
public void AppendRule(Rule rule)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`AppendRule` accepts the following parameter.
|
|
97
|
+
|
|
98
|
+
| Parameter | Type | Default | Description |
|
|
99
|
+
|-----------|------|---------|-------------|
|
|
100
|
+
| `rule` | Rule | required | The `Rule` instance to append. |
|
|
101
|
+
|
|
102
|
+
### `IsValid`
|
|
103
|
+
|
|
104
|
+
This method validates that every enabled action in the RuleSet has valid input. It skips disabled rules.
|
|
105
|
+
|
|
106
|
+
```csharp
|
|
107
|
+
public bool IsValid()
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This method accepts no parameters. It returns `true` if all enabled actions pass validation, or `false` if any action reports an error.
|
|
111
|
+
|
|
112
|
+
## RuleSet properties
|
|
113
|
+
|
|
114
|
+
The RuleSet API reference contains the following properties.
|
|
115
|
+
|
|
116
|
+
### `RulesCount`
|
|
117
|
+
|
|
118
|
+
```csharp
|
|
119
|
+
public int RulesCount { get; }
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
The number of `Rule` instances currently in the RuleSet.
|
|
123
|
+
|
|
124
|
+
## RuleSet utility functions
|
|
125
|
+
|
|
126
|
+
The following functions are from `Unity.Pixyz.Plugin4Unity.Editor.AI.ATTAssistantUtilities`.
|
|
127
|
+
|
|
128
|
+
### `RunRuleSet`
|
|
129
|
+
|
|
130
|
+
This function executes all rules in a RuleSet asset against the current scene selection, or the entire scene if nothing is selected.
|
|
131
|
+
|
|
132
|
+
```csharp
|
|
133
|
+
public static void RunRuleSet(string rulesetPath)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
| Parameter | Type | Default | Description |
|
|
137
|
+
|-----------|------|---------|-------------|
|
|
138
|
+
| `rulesetPath` | string | required | Project-relative path to the RuleSet asset to run. |
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
## Contents
|
|
2
|
+
- [Actions](#actions)
|
|
3
|
+
- [RuleSets](#rulesets)
|
|
4
|
+
- Description
|
|
5
|
+
- Modifying RuleSets
|
|
6
|
+
- Creating RuleSets
|
|
7
|
+
- Setting Action Parameters
|
|
8
|
+
- Running RuleSets
|
|
9
|
+
- Validation Checklist
|
|
10
|
+
- [Action utility functions](#action-utility-functions) — `GetActionsList`, `GetActionDefinitions`, `SetActionParameter`
|
|
11
|
+
- [Action utility output types](#action-utility-output-types) — `ActionInfo`, `ActionDefinition`, `ActionParameterInfo`, `EnumInfo`
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Actions
|
|
16
|
+
|
|
17
|
+
Actions are classes derived from UnityEditor.PixyzPlugin4Unity.Actions.ActionBase that execute a task on a list of input objects.
|
|
18
|
+
It is expected that users will create additional Action classes to extend the Actions available in the base package.
|
|
19
|
+
|
|
20
|
+
## RuleSets
|
|
21
|
+
|
|
22
|
+
### Description
|
|
23
|
+
RuleSets are a SerializedObject containing a list of Rule instances, which contain a list of Action instances. RuleSets are used to ensure a set of Actions are executed in a specific order.
|
|
24
|
+
RuleSets are derived from ScriptableObject and must end with the '.asset' extension.
|
|
25
|
+
RuleSets support conversion to json. This will include information about the Actions they contain.
|
|
26
|
+
|
|
27
|
+
### Modifying RuleSets
|
|
28
|
+
|
|
29
|
+
#### Step 1: Load RuleSet
|
|
30
|
+
- Use AssetDatabase.LoadAssetAtPath to load the asset from memory.
|
|
31
|
+
|
|
32
|
+
#### Step 2: Construct the script
|
|
33
|
+
- Read the API reference for the RuleSet class. Also read the API reference for the Rule and RuleBlock classes if required.
|
|
34
|
+
- Construct a script using the APIs from those files, to run as C# in a live Editor. Here is an
|
|
35
|
+
example that adds a Decimate Action to a RuleSet:
|
|
36
|
+
|
|
37
|
+
```csharp
|
|
38
|
+
using UnityEngine;
|
|
39
|
+
using UnityEditor;
|
|
40
|
+
using UnityEditor.PixyzPlugin4Unity.RuleEngine;
|
|
41
|
+
|
|
42
|
+
string path = "Assets/Rulesets/OptimizationRuleSet.asset";
|
|
43
|
+
RuleSet ruleSet = AssetDatabase.LoadAssetAtPath<RuleSet>(path);
|
|
44
|
+
|
|
45
|
+
if (ruleSet == null)
|
|
46
|
+
throw new System.Exception($"RuleSet not found at {path}");
|
|
47
|
+
|
|
48
|
+
Undo.RecordObject(ruleSet, "Add Decimate action");
|
|
49
|
+
|
|
50
|
+
if (ruleSet.RulesCount == 0)
|
|
51
|
+
throw new System.Exception($"No rules found in RuleSet {path}");
|
|
52
|
+
|
|
53
|
+
Rule rule = ruleSet.GetRule(0);
|
|
54
|
+
|
|
55
|
+
// Decimate Action ID is 277054868
|
|
56
|
+
RuleBlock decimateBlock = new RuleBlock(277054868);
|
|
57
|
+
|
|
58
|
+
rule.AppendBlock(decimateBlock);
|
|
59
|
+
|
|
60
|
+
EditorUtility.SetDirty(ruleSet);
|
|
61
|
+
AssetDatabase.SaveAssets();
|
|
62
|
+
|
|
63
|
+
return $"Added Decimate action to {path} (Rule index 0)";
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
A proper script for modifying a RuleSet has the following traits:
|
|
67
|
+
- Does not use the ScriptableObject API (this bypasses necessary event triggers).
|
|
68
|
+
|
|
69
|
+
#### Step 3: Validation
|
|
70
|
+
- Run the script as C# in a live Editor.
|
|
71
|
+
- Validate the RuleSet against the validation checklist.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### Creating RuleSets
|
|
75
|
+
|
|
76
|
+
#### Step 1: Create RuleSet
|
|
77
|
+
- Create the UnityEditor.PixyzPlugin4Unity.RuleEngine.RuleSet asset.
|
|
78
|
+
Continue to Step 2 if actions need to be added to the RuleSet. If not, add the GetContextGameObjects action and jump to Step 3.
|
|
79
|
+
|
|
80
|
+
#### Step 2: Add Actions
|
|
81
|
+
|
|
82
|
+
**Preflight**
|
|
83
|
+
- Ensure the RuleSet exists.
|
|
84
|
+
- Choose the combination of Actions that will best perform the requested procedure. NEVER create new Actions without explicit permission. Instead, use the Actions returned by `GetActionsList`.
|
|
85
|
+
- Divide Actions into Rules based on the GameObject they need to act upon. Each Rule initially executes on every GameObject unless the input is narrowed with a Filter action. Example: If only lights need to be disabled and only meshes with >10000 vertices need to be decimated, two rules will be needed as this is two different groups of GameObjects.
|
|
86
|
+
|
|
87
|
+
**Adding Rules**
|
|
88
|
+
- Check whether the existing Rule(s) in the RuleSet is just the GetContextGameObjects action. If it is, append the group of actions to it rather than creating a new Rule.
|
|
89
|
+
- If a new Rule needs to be created, add it to the RuleSet.
|
|
90
|
+
- Add Actions to the Rules.
|
|
91
|
+
- Set action parameters if required — see Setting Action Parameters below.
|
|
92
|
+
|
|
93
|
+
**Technical Notes**
|
|
94
|
+
- All Actions derive from the ActionBase class.
|
|
95
|
+
- Actions are located in the UnityEditor.PixyzPlugin4Unity.Actions namespace.
|
|
96
|
+
|
|
97
|
+
#### Step 3: Validation
|
|
98
|
+
- Validate the RuleSet logic using the validation checklist.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### Setting Action Parameters
|
|
102
|
+
|
|
103
|
+
#### Step 1: Gather data
|
|
104
|
+
- Gather any missing information needed to call `ATTAssistantUtilities.SetActionParameter`. If you need to retrieve a GlobalObjectId, first read the GlobalObjectId class to choose the correct function to call.
|
|
105
|
+
- Call `ATTAssistantUtilities.SetActionParameter` to set the parameter.
|
|
106
|
+
- If the result is false and not an exception, retry a maximum of three times.
|
|
107
|
+
- Follow a path based on the result.
|
|
108
|
+
|
|
109
|
+
#### Path A: AITypeSecurityException
|
|
110
|
+
Follow these steps if `ATTAssistantUtilities.SetActionParameter` threw an AITypeSecurityException.
|
|
111
|
+
- Inform the user the parameter cannot be set programmatically for security reasons.
|
|
112
|
+
- Advise the user to manually set the parameter and what value to set it to.
|
|
113
|
+
|
|
114
|
+
#### Path B: Exception
|
|
115
|
+
Follow these steps if `ATTAssistantUtilities.SetActionParameter` threw any other exception.
|
|
116
|
+
- Warn the user the property was unable to be set.
|
|
117
|
+
- Advise the user to manually set the parameter and what value to set it to.
|
|
118
|
+
|
|
119
|
+
#### Path C: Success
|
|
120
|
+
Perform these steps if `ATTAssistantUtilities.SetActionParameter` returned true.
|
|
121
|
+
- If the property was set to a scene GameObject, NEVER validate it because it is not persistent. INSTEAD warn the user the property value is temporary and will be lost.
|
|
122
|
+
- Report the success to the user.
|
|
123
|
+
|
|
124
|
+
#### Path D: Failure
|
|
125
|
+
Perform this step if `ATTAssistantUtilities.SetActionParameter` always returns false.
|
|
126
|
+
- Report the failure to the user and advise them to set the parameter manually. Tell them what the property should be set to.
|
|
127
|
+
|
|
128
|
+
All paths are exclusive.
|
|
129
|
+
|
|
130
|
+
**Technical Notes**
|
|
131
|
+
- For the Decimate action specifically, if mesh quality is going to be set to a preset, the Criterion parameter must also be set to Quality.
|
|
132
|
+
- Prefer using presets when possible rather than individually setting each value.
|
|
133
|
+
- If a preset is used, avoid changing values the preset changed unless requested otherwise.
|
|
134
|
+
|
|
135
|
+
**Safety & Constraints**
|
|
136
|
+
1. **One-Strike Rule**: If `ATTAssistantUtilities.SetActionParameter` throws an AITypeSecurityException, you MUST TERMINATE the task immediately. Do NOT use raw C# execution, reflection, or any other method to bypass this. Follow the steps in Path A as your final actions.
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
### Running RuleSets
|
|
140
|
+
Use `ATTAssistantUtilities.RunRuleSet()` instead of the RuleSet's public API to run a RuleSet.
|
|
141
|
+
Only one RuleSet must be running at a time.
|
|
142
|
+
When running a RuleSet, remind the user it is a background task/asynchronous.
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
### Validation Checklist
|
|
146
|
+
- The first Action in each Rule is GetContextGameObjects or RunRules.
|
|
147
|
+
- If the RunRules Action is in a Rule, it is the only Action.
|
|
148
|
+
- Each Rule has at least one Action.
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
## Action utility functions
|
|
152
|
+
|
|
153
|
+
The following functions are from `Unity.Pixyz.Plugin4Unity.Editor.AI.ATTAssistantUtilities`.
|
|
154
|
+
|
|
155
|
+
### `GetActionsList`
|
|
156
|
+
|
|
157
|
+
Returns all Rule Engine actions available in the project, including user-defined actions. Use this when you do not already know an action's ID. Pass the returned IDs to `GetActionDefinitions` to inspect parameters.
|
|
158
|
+
|
|
159
|
+
```csharp
|
|
160
|
+
public static ActionInfo[] GetActionsList()
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Returns an `ActionInfo[]` containing the name, tooltip, and ID of every available action.
|
|
164
|
+
|
|
165
|
+
### `GetActionDefinitions`
|
|
166
|
+
|
|
167
|
+
Returns parameter definitions for one or more actions by unqualified class name (e.g. `"Decimate"`, not `"UnityEditor.PixyzPlugin4Unity.Actions.Decimate"`). Use this before `SetActionParameter` to obtain correct parameter names and types. Throws if an action class name is not found.
|
|
168
|
+
|
|
169
|
+
```csharp
|
|
170
|
+
public static ActionDefinition[] GetActionDefinitions(string[] actionClassNames)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Returns an `ActionDefinition[]`, each containing the action ID and its full parameter list.
|
|
174
|
+
|
|
175
|
+
### `SetActionParameter`
|
|
176
|
+
|
|
177
|
+
Sets a `UserParameter` field value on an action within a RuleSet. Use `GetActionDefinitions` first to obtain the correct parameter name. Returns `false` if the field was not found.
|
|
178
|
+
|
|
179
|
+
```csharp
|
|
180
|
+
public static bool SetActionParameter(string ruleSetPath, int ruleIndex, int ruleblockIndex, string parameterName, string value)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
| Parameter | Type | Default | Description |
|
|
184
|
+
|-----------|------|---------|-------------|
|
|
185
|
+
| `ruleSetPath` | string | required | Project-relative path to the RuleSet asset. |
|
|
186
|
+
| `ruleIndex` | int | required | Zero-based index of the rule containing the action. |
|
|
187
|
+
| `ruleblockIndex` | int | required | Zero-based index of the action block within the rule. |
|
|
188
|
+
| `parameterName` | string | required | The `ParameterPath` value from `GetActionDefinitions`. Must not be fully qualified. |
|
|
189
|
+
| `value` | string | required | String representation of the value to set. For Unity assets or scene objects, provide a `GlobalObjectId` string. For `LayerMask`, use layer names separated by `\|`. |
|
|
190
|
+
|
|
191
|
+
Returns `true` if the parameter was set and the RuleSet saved, `false` if the field was not found.
|
|
192
|
+
|
|
193
|
+
## Action utility output types
|
|
194
|
+
|
|
195
|
+
### `ActionInfo`
|
|
196
|
+
|
|
197
|
+
| Field | Type | Description |
|
|
198
|
+
|-------|------|-------------|
|
|
199
|
+
| `Name` | string | Fully qualified class name of the action. |
|
|
200
|
+
| `Description` | string | Tooltip text describing what the action does. |
|
|
201
|
+
| `ID` | int | Unique integer ID. Pass to `GetActionDefinitions` or use as `RuleBlock` action ID. |
|
|
202
|
+
|
|
203
|
+
### `ActionDefinition`
|
|
204
|
+
|
|
205
|
+
| Field | Type | Description |
|
|
206
|
+
|-------|------|-------------|
|
|
207
|
+
| `ID` | int | Unique integer ID of the action. |
|
|
208
|
+
| `Parameters` | `ActionParameterInfo[]` | All configurable `UserParameter` fields on the action. |
|
|
209
|
+
|
|
210
|
+
### `ActionParameterInfo`
|
|
211
|
+
|
|
212
|
+
| Field | Type | Description |
|
|
213
|
+
|-------|------|-------------|
|
|
214
|
+
| `Name` | string | Immediate field name. |
|
|
215
|
+
| `ParameterPath` | string | Full dot-separated path to pass as `parameterName` to `SetActionParameter` (e.g. `"advancedParametersQuality.surfacicTolerance"`). |
|
|
216
|
+
| `Type` | string | Fully qualified type name of the field. |
|
|
217
|
+
| `Description` | string | Tooltip describing the parameter. |
|
|
218
|
+
| `IsConditional` | bool | `true` if this parameter is only visible under certain conditions. |
|
|
219
|
+
| `PossibleEnumValues` | `EnumInfo[]` | Valid values if the parameter is an enum type. |
|
|
220
|
+
| `NestedParameters` | `ActionParameterInfo[]` | Child parameters for struct fields. |
|
|
221
|
+
|
|
222
|
+
### `EnumInfo`
|
|
223
|
+
|
|
224
|
+
| Field | Type | Description |
|
|
225
|
+
|-------|------|-------------|
|
|
226
|
+
| `Label` | string | Name of the enum value. |
|
|
227
|
+
| `Value` | Int64 | Underlying integer value of the enum member. |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Security notes: audio-setup-mixers
|
|
2
|
+
|
|
3
|
+
This skill has the agent run C# inside the user's open Unity Editor through `unity command script eval`. Automated skill scanners flag that as a powerful capability. It is intentional, and it is limited by the safeguards below.
|
|
4
|
+
|
|
5
|
+
## Accepted risks
|
|
6
|
+
|
|
7
|
+
| Risk | Capability | Why it is accepted |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `SEC_POWER_CAP` | Runs C# in the user's open Editor through `unity command script eval` | It only reaches the Editor the user already has open, on their own machine, as that user, so it grants nothing they couldn't do themselves. `script eval` sits behind the Pipeline capability gate. No code fetched from a remote source is run. Where a named `unity command` covers a step, the skill uses that instead of `script eval`. |
|
|
10
|
+
|
|
11
|
+
## Mitigations
|
|
12
|
+
|
|
13
|
+
- **Only the user's own Editor.** `unity command script eval` talks to the Editor open on this machine. It can't reach another machine or another user's Editor.
|
|
14
|
+
- **Capability gate.** `script eval` is only available when the project's Pipeline package provides it.
|
|
15
|
+
- **No remote code.** The agent runs C# it writes from this skill's own recipes. Nothing downloaded from outside is executed.
|
|
16
|
+
- **Named commands first.** When a dedicated `unity command` covers a step, the skill uses it instead of `script eval`.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audio-setup-mixers
|
|
3
|
+
description: Routes Audio Sources into existing Audio Mixer Groups, classifying each source by what it plays. Use when the user asks about cleaning up mixer assignments, routing audio through a mixer, or which group a sound belongs in.
|
|
4
|
+
---
|
|
5
|
+
# Audio Mixer Setup
|
|
6
|
+
|
|
7
|
+
Routing an Audio Source to a mixer group is a scene edit that only a running Editor can
|
|
8
|
+
make, so this skill needs a live Editor it can execute C# in. Step 0 establishes that
|
|
9
|
+
before anything else.
|
|
10
|
+
|
|
11
|
+
**What this skill automates, and what it hands back to you.** Inspecting mixers and
|
|
12
|
+
routing Audio Sources into groups is entirely public Unity API, and that is the tedious
|
|
13
|
+
part — walking dozens of sources and classifying them by what they play. Creating a mixer
|
|
14
|
+
or a group has no public API; it exists only on types Unity does not commit to keeping
|
|
15
|
+
stable. So this skill will not create groups behind your back. It inventories what exists,
|
|
16
|
+
proposes the routing, asks you to add any missing group in the Audio Mixer window, and
|
|
17
|
+
then does all the routing itself.
|
|
18
|
+
|
|
19
|
+
That is a deliberate limit, not a gap to work around. Do not reach for reflection to
|
|
20
|
+
create groups, and do not hand-edit a `.mixer` file — mixer structure is not safely
|
|
21
|
+
authorable blind.
|
|
22
|
+
|
|
23
|
+
## Step 0: Confirm you can run C# in the Editor
|
|
24
|
+
|
|
25
|
+
Every C# step below runs inside a live Editor through the Unity CLI. **The `unity-cli` skill
|
|
26
|
+
owns getting you there** — installing the CLI, confirming a connected Editor, adding the
|
|
27
|
+
project's `com.unity.pipeline` package, telling a genuinely absent Editor apart from one
|
|
28
|
+
stuck in Safe Mode, and discovering the Editor's command catalog. Follow it first; don't
|
|
29
|
+
re-derive any of it here.
|
|
30
|
+
|
|
31
|
+
Two things it can't know for you:
|
|
32
|
+
|
|
33
|
+
- **You need `script eval` in particular**, not just a reachable Editor. Confirm it appears in the
|
|
34
|
+
catalog. Its presence depends on the Pipeline package version, not on the CLI, so a
|
|
35
|
+
healthy install can still lack it — if it's missing, say so and stop.
|
|
36
|
+
- **Do not fall back to editing `.mixer` files by hand.** Mixer routing is not safely
|
|
37
|
+
authorable blind, so an unreachable Editor is a stop, not a cue to improvise.
|
|
38
|
+
|
|
39
|
+
Once `script eval` is available, that is how each C# step below runs.
|
|
40
|
+
|
|
41
|
+
Run C# through the connected Editor with the `script eval` command. Discover its parameter shape
|
|
42
|
+
from `unity command --format json` rather than assuming one — the inline form is
|
|
43
|
+
`unity command script eval --caller plugin --skill audio-setup-mixers --code '<snippet>'`, and some Pipeline versions also register
|
|
44
|
+
`script eval_file` for running a snippet from a file. **Check the catalog before reaching for
|
|
45
|
+
`script eval_file`; it is frequently absent.** `unity command` defaults to a 30 second timeout.
|
|
46
|
+
|
|
47
|
+
### Passing C# to `script eval`
|
|
48
|
+
|
|
49
|
+
`script eval` compiles a **statement block, not a file**. Two consequences, both of which cause a
|
|
50
|
+
compile error rather than a warning:
|
|
51
|
+
|
|
52
|
+
- **No `using` directives.** The compiler reads `using UnityEngine;` as a resource-disposal
|
|
53
|
+
statement and rejects it (`CS0210`).
|
|
54
|
+
- **Types must be fully qualified.** A bare `AssetDatabase` or `Volume` does not resolve
|
|
55
|
+
(`CS0246` / `CS0103`), and a bare `Object` is ambiguous with `object` (`CS0104`).
|
|
56
|
+
|
|
57
|
+
Where a snippet below is written as a file — with usings, for readability, or because it is
|
|
58
|
+
meant to be saved into the project — qualify the types before passing it to `script eval`.
|
|
59
|
+
|
|
60
|
+
## Step 1: Pre-flight
|
|
61
|
+
If the user hasn't explicitly asked for Audio Mixers, confirm that they want to proceed with setting them up.
|
|
62
|
+
|
|
63
|
+
Then inventory what already exists with the mixer-inventory snippet in
|
|
64
|
+
[references/api.md](references/api.md), run through the Editor as described in Step 0. That gives
|
|
65
|
+
you every mixer in the project and the group names in each.
|
|
66
|
+
|
|
67
|
+
It returns a flat list of groups, not the parent/child tree. That is enough to route into, and it
|
|
68
|
+
is all the public API exposes. If the hierarchy matters for the conversation, ask the user to look
|
|
69
|
+
at the Audio Mixer window and describe it — don't reach for the non-public tree API to find out.
|
|
70
|
+
|
|
71
|
+
**If the project has no mixer at all,** say so and stop rather than improvising one: creating a
|
|
72
|
+
mixer has no public API. Ask the user to create one (Window → Audio → Audio Mixer, then the **+**
|
|
73
|
+
next to Mixers), and pick up from here once it exists.
|
|
74
|
+
|
|
75
|
+
## Step 2: Find scene references
|
|
76
|
+
Find all Audio Source components, look at their assigned Generator asset names, and generalize a fitting class or category of the sound name, ideally something already existing.
|
|
77
|
+
Examples for Audio Clip asset names:
|
|
78
|
+
- "FootStep4_Sound" -> Foley
|
|
79
|
+
- "Dialogue_Female_Scene4" -> Vox/Voice/Dialogue
|
|
80
|
+
- "GunShot" -> SFX
|
|
81
|
+
- "Menu_Theme_Variation" -> Music
|
|
82
|
+
|
|
83
|
+
If the assigned asset isn't descriptive or non-existing, try to look at the GameObject name or potential adjacent MonoBehaviour names.
|
|
84
|
+
Ask to create an Uncategorized group if it seems hard or confidence is low in classifying how an Audio Source is being used.
|
|
85
|
+
|
|
86
|
+
## Step 3: Agree the group list, and get any missing groups created
|
|
87
|
+
Present the classification from Step 2 as a proposed routing — each Audio Source and the group you
|
|
88
|
+
intend to send it to — and revise it with the user.
|
|
89
|
+
|
|
90
|
+
**WAIT for the user to respond before proceeding.**
|
|
91
|
+
|
|
92
|
+
Prefer an existing group when it genuinely covers the category, even if you'd have named it
|
|
93
|
+
differently. But **don't collapse categories that a mixing engineer would keep apart** — Foley is a
|
|
94
|
+
subset of SFX, not another word for it, so a gunshot does not belong in a `Foley` group just because
|
|
95
|
+
one exists. When the existing groups only partly cover your categories, say which ones fit and which
|
|
96
|
+
need a new group, and let the user decide.
|
|
97
|
+
|
|
98
|
+
For categories with no matching group, you cannot create the group — there is no public API for it.
|
|
99
|
+
Hand it over precisely, naming the mixer and the exact group names, as shown at the end of
|
|
100
|
+
[references/api.md](references/api.md). Then **re-run the inventory snippet to confirm the groups
|
|
101
|
+
exist and check their spelling** before routing. Don't assume the user did it, and don't assume
|
|
102
|
+
they spelled it the way you asked.
|
|
103
|
+
|
|
104
|
+
## Step 4: Route the Audio Sources
|
|
105
|
+
With the group list settled and confirmed present, assign each Audio Source's output group using the
|
|
106
|
+
routing snippet in [references/api.md](references/api.md). It is public API throughout, and it wraps
|
|
107
|
+
the whole pass in a single undo step so the user can back all of it out at once.
|
|
108
|
+
|
|
109
|
+
**Key the mapping on the identifier you classified by.** Step 2 reads the clip asset name first and
|
|
110
|
+
only falls back to the GameObject name, so the mapping accepts either — the two are different
|
|
111
|
+
identifiers and keying on the wrong one drops sources.
|
|
112
|
+
|
|
113
|
+
Three things to report rather than assume:
|
|
114
|
+
|
|
115
|
+
- **Any `NO SUCH GROUP` entries the snippet returns.** That means a group you expected is not in the
|
|
116
|
+
mixer — usually a spelling difference. Resolve it with the user, don't silently skip the source.
|
|
117
|
+
- **Any `NOT IN THE MAPPING` entries.** Those are Audio Sources your classification missed. Reporting
|
|
118
|
+
a successful routing while sources were quietly left unrouted is the worst outcome here, because it
|
|
119
|
+
reads as success.
|
|
120
|
+
- **The scene was modified, not the mixer asset.** Routing lives on the Audio Source, so it only
|
|
121
|
+
persists once the scene is saved. Tell the user, and save only with their agreement.
|
|
122
|
+
|
|
123
|
+
**Volume, effects, and re-parenting are out of scope.** Those live on non-public API. If the user
|
|
124
|
+
asks for them, say the routing is done and point them at the Audio Mixer window for the mix itself.
|
|
125
|
+
|
|
126
|
+
## References
|
|
127
|
+
See [references/api.md](references/api.md)
|