@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.
Files changed (360) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/LICENSE-UNITY-COMPANION.md +122 -0
  3. package/LICENSE.md +31 -0
  4. package/NOTICE.md +90 -0
  5. package/README.md +273 -2
  6. package/cordis.patch.yml +22 -0
  7. package/docs/design.md +297 -0
  8. package/icon.svg +16 -0
  9. package/lib/frontmatter.js +392 -0
  10. package/lib/gating.js +105 -0
  11. package/lib/harness.js +16 -0
  12. package/lib/index.js +171 -0
  13. package/lib/project.js +210 -0
  14. package/lib/registry.js +268 -0
  15. package/lib/requirements.js +214 -0
  16. package/lib/skills.js +191 -0
  17. package/lib/types/frontmatter.d.ts +84 -0
  18. package/lib/types/gating.d.ts +80 -0
  19. package/lib/types/harness.d.ts +152 -0
  20. package/lib/types/index.d.ts +75 -0
  21. package/lib/types/project.d.ts +93 -0
  22. package/lib/types/registry.d.ts +96 -0
  23. package/lib/types/requirements.d.ts +67 -0
  24. package/lib/types/skills.d.ts +54 -0
  25. package/lib/types/watch.d.ts +34 -0
  26. package/lib/watch.js +84 -0
  27. package/locale/en.json +6 -0
  28. package/locale/zh.json +6 -0
  29. package/package.json +70 -4
  30. package/skills/2d-pixel-perfect/SKILL.md +208 -0
  31. package/skills/2d-pixel-perfect/references/api-reference.md +81 -0
  32. package/skills/2d-pixel-perfect/references/camera-setup-builtin.cs +40 -0
  33. package/skills/2d-pixel-perfect/references/camera-setup-urp.cs +49 -0
  34. package/skills/2d-pixel-perfect/references/pipeline-detection.cs +50 -0
  35. package/skills/2d-pixel-perfect/references/sprite-settings.cs +37 -0
  36. package/skills/asset-transformer-toolkit/SECURITY.md +15 -0
  37. package/skills/asset-transformer-toolkit/SKILL.md +39 -0
  38. package/skills/asset-transformer-toolkit/references/create-importer.md +121 -0
  39. package/skills/asset-transformer-toolkit/references/lods.md +61 -0
  40. package/skills/asset-transformer-toolkit/references/rule-api.md +154 -0
  41. package/skills/asset-transformer-toolkit/references/ruleblock-api.md +37 -0
  42. package/skills/asset-transformer-toolkit/references/ruleset-api.md +138 -0
  43. package/skills/asset-transformer-toolkit/references/rulesets-and-actions.md +227 -0
  44. package/skills/audio-setup-mixers/SECURITY.md +16 -0
  45. package/skills/audio-setup-mixers/SKILL.md +127 -0
  46. package/skills/audio-setup-mixers/references/api.md +162 -0
  47. package/skills/build-gtk/SECURITY.md +16 -0
  48. package/skills/build-gtk/SKILL.md +200 -0
  49. package/skills/build-gtk/references/api-reference.md +33 -0
  50. package/skills/build-gtk/references/graph-api-gaps.md +96 -0
  51. package/skills/build-gtk/references/runtime-and-visualization.md +191 -0
  52. package/skills/build-gtk/references/state-machine-api.md +270 -0
  53. package/skills/build-gtk/references/where-the-docs-stop.md +49 -0
  54. package/skills/build-live-game/SKILL.md +159 -0
  55. package/skills/build-live-game/references/achievements.md +757 -0
  56. package/skills/build-live-game/references/apis.md +271 -0
  57. package/skills/build-live-game/references/authentication.md +431 -0
  58. package/skills/build-live-game/references/battlepass.md +904 -0
  59. package/skills/build-live-game/references/blueprints-and-samples.md +75 -0
  60. package/skills/build-live-game/references/cloud-code-cloudbehaviours.md +1111 -0
  61. package/skills/build-live-game/references/cloud-code-modules.md +1276 -0
  62. package/skills/build-live-game/references/cloud-code.md +58 -0
  63. package/skills/build-live-game/references/cloud-save.md +464 -0
  64. package/skills/build-live-game/references/deployment.md +231 -0
  65. package/skills/build-live-game/references/orientation.md +30 -0
  66. package/skills/build-live-game/references/player-account.md +821 -0
  67. package/skills/build-live-game/references/remote-config.md +96 -0
  68. package/skills/build-live-game/references/services-overview.md +76 -0
  69. package/skills/build-live-game/references/tooling.md +375 -0
  70. package/skills/build-live-game/references/ugs-cli.md +86 -0
  71. package/skills/craft-game-floors/SECURITY.md +23 -0
  72. package/skills/craft-game-floors/SKILL.md +134 -0
  73. package/skills/craft-game-floors/references/art-direction.md +85 -0
  74. package/skills/craft-game-floors/references/camera-rigs.md +51 -0
  75. package/skills/craft-game-floors/references/character-motion.md +35 -0
  76. package/skills/craft-game-floors/references/game-audio.md +47 -0
  77. package/skills/craft-game-floors/references/game-feel.md +68 -0
  78. package/skills/craft-game-floors/references/game-shell.md +45 -0
  79. package/skills/craft-game-floors/references/live-floor.md +35 -0
  80. package/skills/craft-game-floors/references/placeholder-assets.md +35 -0
  81. package/skills/craft-game-floors/references/scene-lighting.md +52 -0
  82. package/skills/craft-game-floors/references/toon-shading.md +34 -0
  83. package/skills/craft-game-floors/references/vfx.md +40 -0
  84. package/skills/craft-game-floors/references/visual-scorecard.md +43 -0
  85. package/skills/create-2d-physics/SECURITY.md +16 -0
  86. package/skills/create-2d-physics/SKILL.md +128 -0
  87. package/skills/create-2d-physics/references/2d-physics-core.md +155 -0
  88. package/skills/create-2d-physics/references/legacy-2d-physics.md +45 -0
  89. package/skills/create-tile-palette-or-rule-tiles/SKILL.md +95 -0
  90. package/skills/create-tile-palette-or-rule-tiles/references/hexagonalruletile.md +71 -0
  91. package/skills/create-tile-palette-or-rule-tiles/references/palette-create.md +38 -0
  92. package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createempty.md +37 -0
  93. package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createfromsegment.md +219 -0
  94. package/skills/create-tile-palette-or-rule-tiles/references/ruletile.md +95 -0
  95. package/skills/create-tile-palette-or-rule-tiles/scripts/CreatePaletteTemplate.cs +148 -0
  96. package/skills/create-tile-palette-or-rule-tiles/scripts/ManualWorkflowExample.cs +63 -0
  97. package/skills/create-tile-palette-or-rule-tiles/scripts/RuleTileGenerator.cs +61 -0
  98. package/skills/create-tile-palette-or-rule-tiles/scripts/TilemapRuleTileCreateFromSegment.cs +225 -0
  99. package/skills/fix-3d-physics-collisions/SECURITY.md +17 -0
  100. package/skills/fix-3d-physics-collisions/SKILL.md +139 -0
  101. package/skills/fix-3d-physics-collisions/references/collision-checklist.md +80 -0
  102. package/skills/fix-3d-physics-collisions/references/collision-debugger.md +18 -0
  103. package/skills/fix-3d-physics-collisions/references/console-errors-table.md +9 -0
  104. package/skills/fix-3d-physics-collisions/references/kinematic-trigger-facts.md +18 -0
  105. package/skills/fix-3d-physics-collisions/references/other-symptoms.md +29 -0
  106. package/skills/fix-3d-physics-collisions/references/raycast-checklist.md +8 -0
  107. package/skills/fix-3d-physics-collisions/references/topic-map.md +42 -0
  108. package/skills/fix-3d-physics-collisions/references/trigger-checklist.md +9 -0
  109. package/skills/fix-3d-physics-collisions/scripts/CollisionDebugger.cs +561 -0
  110. package/skills/generate-editor-search-query/SECURITY.md +17 -0
  111. package/skills/generate-editor-search-query/SKILL.md +117 -0
  112. package/skills/generate-editor-search-query/references/open-search-window.md +70 -0
  113. package/skills/generate-editor-search-query/references/query-patterns.md +124 -0
  114. package/skills/implement-in-app-purchases/SKILL.md +82 -0
  115. package/skills/implement-in-app-purchases/references/api-details.md +41 -0
  116. package/skills/implement-in-app-purchases/references/api-notes.md +105 -0
  117. package/skills/implement-in-app-purchases/references/codeless-catalog.md +197 -0
  118. package/skills/implement-in-app-purchases/references/convert-adapty.md +270 -0
  119. package/skills/implement-in-app-purchases/references/convert-essentialkit.md +239 -0
  120. package/skills/implement-in-app-purchases/references/convert-revenuecat.md +277 -0
  121. package/skills/implement-in-app-purchases/references/convert-unipay.md +145 -0
  122. package/skills/implement-in-app-purchases/references/migration-v4-to-v5.md +46 -0
  123. package/skills/implement-in-app-purchases/references/path-add-iap-to-new-project.md +197 -0
  124. package/skills/implement-in-app-purchases/references/path-convert-native-google-billing.md +302 -0
  125. package/skills/implement-in-app-purchases/references/path-convert-native-storekit.md +357 -0
  126. package/skills/implement-in-app-purchases/references/path-implement-iap-d2c.md +253 -0
  127. package/skills/implement-in-app-purchases/references/platform-notes.md +55 -0
  128. package/skills/implement-in-app-purchases/references/pre-check.md +207 -0
  129. package/skills/implement-in-app-purchases/references/topic-map.md +46 -0
  130. package/skills/initialize-ai-navigation/SKILL.md +109 -0
  131. package/skills/initialize-ai-navigation/references/navigation-system.md +793 -0
  132. package/skills/initialize-ai-navigation/references/topic-map.md +66 -0
  133. package/skills/levelplay-unity-integration/SKILL.md +122 -0
  134. package/skills/levelplay-unity-integration/references/adding-more-ad-formats.md +15 -0
  135. package/skills/levelplay-unity-integration/references/banner-api.md +927 -0
  136. package/skills/levelplay-unity-integration/references/best-practices.md +604 -0
  137. package/skills/levelplay-unity-integration/references/dependency-resolution.md +94 -0
  138. package/skills/levelplay-unity-integration/references/examples.md +10 -0
  139. package/skills/levelplay-unity-integration/references/ilrd-api.md +337 -0
  140. package/skills/levelplay-unity-integration/references/initialization-api.md +851 -0
  141. package/skills/levelplay-unity-integration/references/interstitial-api.md +907 -0
  142. package/skills/levelplay-unity-integration/references/ios-setup.md +463 -0
  143. package/skills/levelplay-unity-integration/references/migration-sdk-9.md +666 -0
  144. package/skills/levelplay-unity-integration/references/privacy-settings.md +593 -0
  145. package/skills/levelplay-unity-integration/references/production-release-checklist.md +22 -0
  146. package/skills/levelplay-unity-integration/references/rewarded-api.md +918 -0
  147. package/skills/levelplay-unity-integration/references/step-0-new-or-migration.md +8 -0
  148. package/skills/levelplay-unity-integration/references/step-1-verify-environment.md +4 -0
  149. package/skills/levelplay-unity-integration/references/step-10-testing.md +15 -0
  150. package/skills/levelplay-unity-integration/references/step-2-business-goals.md +12 -0
  151. package/skills/levelplay-unity-integration/references/step-3-install-sdk.md +55 -0
  152. package/skills/levelplay-unity-integration/references/step-4-native-dependencies.md +22 -0
  153. package/skills/levelplay-unity-integration/references/step-5-app-key-and-ad-units.md +18 -0
  154. package/skills/levelplay-unity-integration/references/step-6-5-privacy-and-regulation.md +51 -0
  155. package/skills/levelplay-unity-integration/references/step-6-admob-keys.md +16 -0
  156. package/skills/levelplay-unity-integration/references/step-7-initialize.md +50 -0
  157. package/skills/levelplay-unity-integration/references/step-8-ad-unit-strategy.md +16 -0
  158. package/skills/levelplay-unity-integration/references/step-9-implement-ad-units.md +66 -0
  159. package/skills/levelplay-unity-integration/references/testing-and-validation.md +222 -0
  160. package/skills/levelplay-unity-integration/references/troubleshooting.md +99 -0
  161. package/skills/localize-unity-project/SKILL.md +159 -0
  162. package/skills/localize-unity-project/references/api-notes.md +15 -0
  163. package/skills/localize-unity-project/references/cjk-fonts.md +83 -0
  164. package/skills/localize-unity-project/references/docs-map.md +42 -0
  165. package/skills/localize-unity-project/references/documentation-lookup.md +33 -0
  166. package/skills/localize-unity-project/references/locale-switching.md +17 -0
  167. package/skills/localize-unity-project/references/table-completeness-check.md +47 -0
  168. package/skills/localize-unity-project/references/translating-existing-project.md +47 -0
  169. package/skills/localize-unity-project/references/translation-strategy.md +41 -0
  170. package/skills/localize-unity-project/references/troubleshooting.md +12 -0
  171. package/skills/localize-unity-project/scripts/L10nBatchProcessor.cs +191 -0
  172. package/skills/localize-unity-project/scripts/LocalizedFontAsset.cs +18 -0
  173. package/skills/manage-sprite-atlas/SKILL.md +202 -0
  174. package/skills/manage-sprite-atlas/references/addressables-delivery.md +58 -0
  175. package/skills/manage-sprite-atlas/references/advanced-manual-authoring.md +19 -0
  176. package/skills/manage-sprite-atlas/references/api.md +382 -0
  177. package/skills/manage-sprite-atlas/references/best-practices.md +183 -0
  178. package/skills/manage-sprite-atlas/references/common-errors.md +123 -0
  179. package/skills/manage-sprite-atlas/references/complete-workflow.md +61 -0
  180. package/skills/manage-sprite-atlas/references/custom-packing.md +147 -0
  181. package/skills/manage-sprite-atlas/references/delivery-mechanism.md +30 -0
  182. package/skills/manage-sprite-atlas/references/key-requirements.md +21 -0
  183. package/skills/manage-sprite-atlas/references/manual-authoring.md +39 -0
  184. package/skills/manage-sprite-atlas/references/namespaces.md +15 -0
  185. package/skills/manage-sprite-atlas/references/v2-architecture.md +21 -0
  186. package/skills/manage-sprite-atlas/resources/authoringvsruntime.cs +176 -0
  187. package/skills/manage-sprite-atlas/resources/buildaddressablespostprocess.cs +59 -0
  188. package/skills/manage-sprite-atlas/resources/cacheloadedatlases.cs +145 -0
  189. package/skills/manage-sprite-atlas/resources/cleanupbatchoperations.cs +119 -0
  190. package/skills/manage-sprite-atlas/resources/createandconfiguremasteratlas.cs +57 -0
  191. package/skills/manage-sprite-atlas/resources/custompackersetup.cs +88 -0
  192. package/skills/manage-sprite-atlas/resources/deprecatedmethods.cs +142 -0
  193. package/skills/manage-sprite-atlas/resources/dontmodifywithoutsaving.cs +120 -0
  194. package/skills/manage-sprite-atlas/resources/dontpackinruntimebuilds.cs +190 -0
  195. package/skills/manage-sprite-atlas/resources/dontscriptspriteatlasineditor.cs +114 -0
  196. package/skills/manage-sprite-atlas/resources/editorconfiguration.cs +95 -0
  197. package/skills/manage-sprite-atlas/resources/enablespritepacking.cs +172 -0
  198. package/skills/manage-sprite-atlas/resources/gridspritepacker.cs +50 -0
  199. package/skills/manage-sprite-atlas/resources/handlelatebinding.cs +147 -0
  200. package/skills/manage-sprite-atlas/resources/handlenullcases.cs +141 -0
  201. package/skills/manage-sprite-atlas/resources/migratev1tov2.cs +335 -0
  202. package/skills/manage-sprite-atlas/resources/multipagepacker.cs +80 -0
  203. package/skills/manage-sprite-atlas/resources/optimizetexturesettings.cs +191 -0
  204. package/skills/manage-sprite-atlas/resources/packerdebugging.cs +158 -0
  205. package/skills/manage-sprite-atlas/resources/packtransform.cs +51 -0
  206. package/skills/manage-sprite-atlas/resources/platformnames.cs +127 -0
  207. package/skills/manage-sprite-atlas/resources/queryspritesefficiently.cs +222 -0
  208. package/skills/manage-sprite-atlas/resources/registercallbacks.cs +152 -0
  209. package/skills/manage-sprite-atlas/resources/runtimeatlasloader.cs +15 -0
  210. package/skills/manage-sprite-atlas/resources/runtimespriteaccess.cs +19 -0
  211. package/skills/manage-sprite-atlas/resources/savespriteatlasasset.cs +107 -0
  212. package/skills/manage-sprite-atlas/resources/scriptablepacker.cs +81 -0
  213. package/skills/manage-sprite-atlas/resources/setincludeinbuild.cs +164 -0
  214. package/skills/manage-sprite-atlas/resources/sizeoptimizedpacker.cs +88 -0
  215. package/skills/manage-sprite-atlas/resources/spriteatlaslatebinding.cs +123 -0
  216. package/skills/manage-sprite-atlas/resources/spriteatlasprebuildgenerator.cs +219 -0
  217. package/skills/manage-sprite-atlas/resources/spritedata.cs +35 -0
  218. package/skills/manage-sprite-atlas/resources/spritepack.cs +39 -0
  219. package/skills/manage-sprite-atlas/resources/texturedata.cs +15 -0
  220. package/skills/manage-sprite-atlas/resources/updatebuildscripts.cs +357 -0
  221. package/skills/manage-sprite-atlas/resources/updatesettingsconfiguration.cs +135 -0
  222. package/skills/manage-sprite-atlas/resources/usevariantswisely.cs +179 -0
  223. package/skills/manage-sprite-atlas/resources/variantatlas.cs +39 -0
  224. package/skills/migrate-birp-to-urp/SECURITY.md +16 -0
  225. package/skills/migrate-birp-to-urp/SKILL.md +167 -0
  226. package/skills/migrate-birp-to-urp/references/capturing-the-editor.md +66 -0
  227. package/skills/migrate-birp-to-urp/references/complex-shader-situations.md +272 -0
  228. package/skills/migrate-birp-to-urp/references/conversion-and-rendering-triage.md +113 -0
  229. package/skills/migrate-birp-to-urp/references/custom-shader-triage.md +123 -0
  230. package/skills/migrate-birp-to-urp/references/implementation-patterns.md +529 -0
  231. package/skills/migrate-birp-to-urp/references/migration-workflow.md +265 -0
  232. package/skills/migrate-birp-to-urp/references/parity-validation-and-troubleshooting.md +114 -0
  233. package/skills/migrate-birp-to-urp/references/preflight-and-urp-setup.md +195 -0
  234. package/skills/migrate-birp-to-urp/references/quality-settings-map.md +69 -0
  235. package/skills/new-unity-project/SECURITY.md +26 -0
  236. package/skills/new-unity-project/SKILL.md +171 -0
  237. package/skills/new-unity-project/references/checklist.md +18 -0
  238. package/skills/new-unity-project/references/common-mistakes.md +15 -0
  239. package/skills/new-unity-project/references/skill-setup.md +66 -0
  240. package/skills/new-unity-project/references/step-1-concept.md +13 -0
  241. package/skills/new-unity-project/references/step-2-platforms-and-create.md +31 -0
  242. package/skills/new-unity-project/references/step-3-join-and-reconcile.md +16 -0
  243. package/skills/new-unity-project/references/step-4-source-control.md +9 -0
  244. package/skills/new-unity-project/references/step-5-packages.md +18 -0
  245. package/skills/new-unity-project/references/step-6-identity-and-floors.md +20 -0
  246. package/skills/new-unity-project/references/step-7-visual-baseline.md +75 -0
  247. package/skills/new-unity-project/references/step-8-first-commit.md +21 -0
  248. package/skills/new-unity-project/references/step-9-handoff.md +23 -0
  249. package/skills/optimize-audio/SECURITY.md +16 -0
  250. package/skills/optimize-audio/SKILL.md +120 -0
  251. package/skills/optimize-audio/references/diagnostics.md +42 -0
  252. package/skills/optimize-audio/references/troubleshooting.md +41 -0
  253. package/skills/optimize-audio/resources/audio-import-api.md +149 -0
  254. package/skills/optimize-audio/resources/platform-settings.md +48 -0
  255. package/skills/optimize-text-mesh-pro/SKILL.md +181 -0
  256. package/skills/optimize-text-mesh-pro/references/dynamic-atlas-and-profiling.md +28 -0
  257. package/skills/optimize-text-mesh-pro/references/topic-map.md +36 -0
  258. package/skills/optimize-web/SECURITY.md +16 -0
  259. package/skills/optimize-web/SKILL.md +157 -0
  260. package/skills/optimize-web/references/editor-csharp.md +120 -0
  261. package/skills/optimize-web/references/topic-map.md +49 -0
  262. package/skills/optimize-web/references/troubleshooting.md +45 -0
  263. package/skills/optimize-web/references/understand-request.md +19 -0
  264. package/skills/optimize-web/references/web-assets-quality.md +59 -0
  265. package/skills/optimize-web/references/web-player-settings.md +39 -0
  266. package/skills/optimize-web/references/web-profiling-memory.md +71 -0
  267. package/skills/optimize-web/scripts/WebOptimizer.cs +46 -0
  268. package/skills/optimize-web/scripts/toktx-examples.sh +11 -0
  269. package/skills/setup-multiplayer-services/SKILL.md +36 -0
  270. package/skills/setup-multiplayer-services/references/dgs-entrypoint.md +79 -0
  271. package/skills/setup-multiplayer-services/references/entrypoints.md +213 -0
  272. package/skills/setup-multiplayer-services/references/examples.md +33 -0
  273. package/skills/setup-multiplayer-services/references/implementation-fit.md +30 -0
  274. package/skills/setup-multiplayer-services/references/underlying-services.md +11 -0
  275. package/skills/setup-multiplayer-services/references/workflows-prerequisites.md +17 -0
  276. package/skills/setup-vivox-voice-chat/SECURITY.md +16 -0
  277. package/skills/setup-vivox-voice-chat/SKILL.md +166 -0
  278. package/skills/setup-vivox-voice-chat/references/api-reference-lookup.md +28 -0
  279. package/skills/setup-vivox-voice-chat/references/docs-topic-map.md +13 -0
  280. package/skills/setup-vivox-voice-chat/references/events-and-participants.md +79 -0
  281. package/skills/setup-vivox-voice-chat/references/init-and-login.md +92 -0
  282. package/skills/setup-vivox-voice-chat/references/text-chat.md +93 -0
  283. package/skills/setup-vivox-voice-chat/references/troubleshooting.md +47 -0
  284. package/skills/setup-vivox-voice-chat/references/voice-channels.md +92 -0
  285. package/skills/shader-graph-create-custom-node/SKILL.md +25 -0
  286. package/skills/shader-graph-create-custom-node/resources/all_hints.hlsl +182 -0
  287. package/skills/sprite-editor/SECURITY.md +16 -0
  288. package/skills/sprite-editor/SKILL.md +66 -0
  289. package/skills/sprite-editor/references/api_reference.md +151 -0
  290. package/skills/sprite-editor/references/background.md +112 -0
  291. package/skills/sprite-editor/references/templates.md +72 -0
  292. package/skills/sprite-editor/scripts/AutomaticSliceTexture.cs +40 -0
  293. package/skills/sprite-editor/scripts/GenerateNewSpriteRects.cs +200 -0
  294. package/skills/sprite-editor/scripts/GetTextureSourceImageSize.cs +32 -0
  295. package/skills/sprite-editor/scripts/GetTextureToSlice.cs +55 -0
  296. package/skills/sprite-editor/scripts/GridSliceTexture.cs +40 -0
  297. package/skills/sprite-editor/scripts/IsometricSliceTexture.cs +141 -0
  298. package/skills/sprite-editor/scripts/README.md +134 -0
  299. package/skills/sprite-editor/scripts/SetPivotExample.cs +58 -0
  300. package/skills/sprite-editor/scripts/SpriteToPng.cs +88 -0
  301. package/skills/sprite-segment-3x3grid/SKILL.md +177 -0
  302. package/skills/sprite-segment-3x3grid/references/topic-map.md +37 -0
  303. package/skills/sprite-segment-3x3grid/scripts/SpriteGridAnalysis.cs +119 -0
  304. package/skills/ui/SKILL.md +142 -0
  305. package/skills/ui-imgui/SKILL.md +180 -0
  306. package/skills/ui-imgui/references/gui-elements.md +156 -0
  307. package/skills/ui-imgui/references/templates.md +141 -0
  308. package/skills/ui-ugui/SKILL.md +217 -0
  309. package/skills/ui-ugui/references/layout-and-anchors.md +61 -0
  310. package/skills/ui-ugui/references/scrollview-setup.md +29 -0
  311. package/skills/ui-uitk/SKILL.md +229 -0
  312. package/skills/ui-uitk/references/common-issues.md +74 -0
  313. package/skills/ui-uitk/references/custom-elements.md +241 -0
  314. package/skills/ui-uitk/references/painter2d.md +282 -0
  315. package/skills/ui-uitk/references/pointermanipulator-guide.md +94 -0
  316. package/skills/ui-uitk/references/svg-icons.md +136 -0
  317. package/skills/ui-uitk/references/ui-runtime-binding.md +234 -0
  318. package/skills/ui-uitk/references/uss-guide.md +138 -0
  319. package/skills/unity-cli/CHANGELOG.md +524 -0
  320. package/skills/unity-cli/SECURITY.md +68 -0
  321. package/skills/unity-cli/SKILL.md +160 -0
  322. package/skills/unity-cli/references/auth-license-cloud.md +318 -0
  323. package/skills/unity-cli/references/bootstrap-project.md +177 -0
  324. package/skills/unity-cli/references/build-run-test.md +555 -0
  325. package/skills/unity-cli/references/catalog-plugins.md +86 -0
  326. package/skills/unity-cli/references/ci-recipes.md +76 -0
  327. package/skills/unity-cli/references/cloud-automation.md +819 -0
  328. package/skills/unity-cli/references/cloud-workflows.md +19 -0
  329. package/skills/unity-cli/references/collaboration.md +533 -0
  330. package/skills/unity-cli/references/config-hub.md +239 -0
  331. package/skills/unity-cli/references/diagnostics-maintenance.md +718 -0
  332. package/skills/unity-cli/references/docs-workflow.md +179 -0
  333. package/skills/unity-cli/references/editor-targeting.md +29 -0
  334. package/skills/unity-cli/references/editors-install.md +490 -0
  335. package/skills/unity-cli/references/environment-variables.md +42 -0
  336. package/skills/unity-cli/references/exit-codes.md +47 -0
  337. package/skills/unity-cli/references/global-flags.md +32 -0
  338. package/skills/unity-cli/references/integration-advanced.md +1130 -0
  339. package/skills/unity-cli/references/notes.md +20 -0
  340. package/skills/unity-cli/references/notifications.md +39 -0
  341. package/skills/unity-cli/references/playmode-verification-loop.md +279 -0
  342. package/skills/unity-cli/references/projects-templates.md +997 -0
  343. package/skills/unity-cli/references/scene-editing-preflight.md +25 -0
  344. package/skills/unity-cli/references/setup-and-help.md +54 -0
  345. package/skills/unity-cli/references/version-control.md +612 -0
  346. package/skills/unity-package-management/SKILL.md +169 -0
  347. package/skills/unity-package-management/references/discovering-packages.md +66 -0
  348. package/skills/unity-package-management/references/headless-run.md +31 -0
  349. package/skills/unity-package-management/references/installer-script.md +92 -0
  350. package/skills/unity-package-management/references/select-packages.md +126 -0
  351. package/skills/unity-pipeline/SECURITY.md +17 -0
  352. package/skills/unity-pipeline/SKILL.md +205 -0
  353. package/skills/unity-pipeline/references/csharp-eval.md +23 -0
  354. package/skills/unity-pipeline/references/multiplayer-play-mode.md +103 -0
  355. package/skills/urp-postprocessing/SECURITY.md +16 -0
  356. package/skills/urp-postprocessing/SKILL.md +188 -0
  357. package/skills/urp-postprocessing/references/code-templates.md +150 -0
  358. package/skills/urp-postprocessing/references/effect-reference.md +86 -0
  359. package/skills/validate-urp-render-graph-renderer-feature/SKILL.md +92 -0
  360. package/skills/validate-urp-render-graph-renderer-feature/references/validation-checklist.md +179 -0
@@ -0,0 +1,182 @@
1
+ #include "ShaderApiReflectionSupport.hlsl"
2
+
3
+ namespace Namespace
4
+ {
5
+ struct CustomStruct
6
+ {
7
+ float Value;
8
+ };
9
+
10
+ /// <funchints>
11
+ /// <sg:ProviderKey>AllHintsUniqueStableID</sg:ProviderKey>
12
+ /// <sg:DisplayName>All Known Hints</sg:DisplayName>
13
+ /// <sg:ReturnDisplayName>Final Result</sg:ReturnDisplayName>
14
+ /// <sg:SearchCategory>Hints/All</sg:SearchCategory>
15
+ /// <sg:SearchTerms>Features, Reflected, Every, Hint</sg:SearchTerms>
16
+ /// <sg:SearchName>All Hints Search Name</sg:SearchName>
17
+ /// </funchints>
18
+ /// <paramhints name="a">
19
+ /// <sg:DisplayName>Custom Struct Value</sg:DisplayName>
20
+ /// <sg:Default>0.5</sg:Default>
21
+ /// <sg:External>Namespace</sg:External>
22
+ /// </paramhints>
23
+ /// <paramhints name="c3">
24
+ /// <sg:DisplayName>Color 3</sg:DisplayName>
25
+ /// <sg:Color />
26
+ /// <sg:Default>1,1,0</sg:Default>
27
+ /// </paramhints>
28
+ /// <paramhints name="c4">
29
+ /// <sg:DisplayName>Color 4</sg:DisplayName>
30
+ /// <sg:Color />
31
+ /// <sg:Default>1,1,0,1</sg:Default>
32
+ /// </paramhints>
33
+ /// <paramhints name="sc3">
34
+ /// <sg:DisplayName>Static Color 3</sg:DisplayName>
35
+ /// <sg:Color />
36
+ /// <sg:Static />
37
+ /// <sg:Default>1,1,0</sg:Default>
38
+ /// </paramhints>
39
+ /// <paramhints name="sc4">
40
+ /// <sg:DisplayName>Static Color 4</sg:DisplayName>
41
+ /// <sg:Color />
42
+ /// <sg:Static />
43
+ /// <sg:Default>1,1,0,1</sg:Default>
44
+ /// </paramhints>
45
+ /// <paramhints name="d">
46
+ /// <sg:DisplayName>Dropdown</sg:DisplayName>
47
+ /// <sg:Dropdown>OptionA, OptionB, OptionC</sg:Dropdown>
48
+ /// <sg:Default>1</sg:Default>
49
+ /// </paramhints>
50
+ /// <paramhints name="sd">
51
+ /// <sg:DisplayName>Dropdown</sg:DisplayName>
52
+ /// <sg:Dropdown>OptionA, OptionB, OptionC</sg:Dropdown>
53
+ /// <sg:Static />
54
+ /// <sg:Default>2</sg:Default>
55
+ /// </paramhints>
56
+ /// <paramhints name="r">
57
+ /// <sg:DisplayName>Range</sg:DisplayName>
58
+ /// <sg:Range>0, 1</sg:Range>
59
+ /// <sg:Default>0.75</sg:Default>
60
+ /// </paramhints>
61
+ /// <paramhints name="sr">
62
+ /// <sg:DisplayName>Range</sg:DisplayName>
63
+ /// <sg:Static />
64
+ /// <sg:Range>0, 1</sg:Range>
65
+ /// <sg:Default>0.25</sg:Default>
66
+ /// </paramhints>
67
+ /// <paramhints name="sb">
68
+ /// <sg:DisplayName>Toggle</sg:DisplayName>
69
+ /// <sg:Static />
70
+ /// <sg:Default>1</sg:Default>
71
+ /// </paramhints>
72
+ /// <paramhints name="si">
73
+ /// <sg:DisplayName>Integer</sg:DisplayName>
74
+ /// <sg:Static />
75
+ /// <sg:Default>5</sg:Default>
76
+ /// </paramhints>
77
+ UNITY_EXPORT_REFLECTION float3 AllHints(
78
+ inout CustomStruct a,
79
+ float3 c3,
80
+ inout float4 c4,
81
+ float3 sc3,
82
+ float4 sc4,
83
+ inout uint d,
84
+ uint sd,
85
+ float r,
86
+ float sr,
87
+ bool sb,
88
+ int si
89
+ )
90
+ {
91
+ return float3(a.Value, sr, sc4.r);
92
+ }
93
+
94
+ } // Namespace
95
+
96
+ /// <funchints>
97
+ /// <sg:ProviderKey>GoodReferables</sg:ProviderKey>
98
+ /// </funchints>
99
+ /// <paramhints name="UV">
100
+ /// <UV/>
101
+ /// <Default>UV2</Default>
102
+ /// </paramhints>
103
+ /// <paramhints name="alsoUV">
104
+ /// <sg:Referable>UV</sg:Referable>
105
+ /// <Default>UV1</Default>
106
+ /// </paramhints>
107
+ /// <paramhints name="Position">
108
+ /// <Position/>
109
+ /// <Default>AbsoluteWorld</Default>
110
+ /// </paramhints>
111
+ /// <paramhints name="Normal">
112
+ /// <Normal/>
113
+ /// <Default>World</Default>
114
+ /// </paramhints>
115
+ /// <paramhints name="Tangent">
116
+ /// <Tangent/>
117
+ /// <Default>Object</Default>
118
+ /// </paramhints>
119
+ /// <paramhints name="Bitangent">
120
+ /// <Bitangent/>
121
+ /// <Default>Tangent</Default>
122
+ /// </paramhints>
123
+ /// <paramhints name="ViewDirection">
124
+ /// <ViewDirection/>
125
+ /// <Default>Screen</Default>
126
+ /// </paramhints>
127
+ /// <paramhints name="VertColor">
128
+ /// <VertexColor/>
129
+ /// </paramhints>
130
+ /// <paramhints name="ScreenPosition">
131
+ /// <ScreenPosition/>
132
+ /// <Default>Pixel</Default>
133
+ /// </paramhints>
134
+ /// <paramhints name="defaultValue">
135
+ /// <Default>1,0,0</Default>
136
+ /// </paramhints>
137
+ UNITY_EXPORT_REFLECTION float3 ReferableGood(float2 UV,
138
+ float2 alsoUV,
139
+ float3 Position,
140
+ float3 Normal,
141
+ float3 Tangent,
142
+ float3 Bitangent,
143
+ float3 ViewDirection,
144
+ float4 VertColor,
145
+ float4 ScreenPosition,
146
+ float3 defaultValue)
147
+ {
148
+ return float3(1,1,0);
149
+ }
150
+
151
+ /// <funchints>
152
+ /// <sg:ProviderKey>PrecisionTest</sg:ProviderKey>
153
+ /// <Precision/>
154
+ /// </funchints>
155
+ /// <paramhints name="a">
156
+ /// <Dynamic/>
157
+ /// </paramhints>
158
+ /// <paramhints name="b">
159
+ /// <Dynamic/>
160
+ /// </paramhints>
161
+ /// <paramhints name="c">
162
+ /// <Dynamic/>
163
+ /// </paramhints>
164
+ UNITY_EXPORT_REFLECTION float2 PrecisionTest(float a, half b, out float c)
165
+ {
166
+ c = a + b;
167
+ return (a,b);
168
+ }
169
+
170
+ /// <funchints>
171
+ /// <sg:ProviderKey>LinkageExample</sg:ProviderKey>
172
+ /// </funchints>
173
+ /// <paramhints name="test">
174
+ /// <Linkage>other</Linkage>
175
+ /// </paramhints>
176
+ UNITY_EXPORT_REFLECTION float3 LinkageExample(bool test, float other)
177
+ {
178
+ if (test)
179
+ return float3(other, 0, 0);
180
+ else
181
+ return float3(0, other, 0);
182
+ }
@@ -0,0 +1,16 @@
1
+ # Security notes: sprite-editor
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,66 @@
1
+ ---
2
+ name: sprite-editor
3
+ description: Edits Unity sprite rectangles, borders, pivots, outlines, and slicing by generating C# scripts. Use when the user works with sprite sheets or sprite slicing.
4
+ modes: [agent, ask]
5
+ ---
6
+
7
+ # Sprite Editor
8
+
9
+ Sprite metadata (rects, borders, pivots, outlines) lives inside the importer, not in a file
10
+ you can edit — reaching it means running C# through a live Editor.
11
+
12
+ **The `unity-cli` skill owns getting you there** — installing the CLI, confirming a connected
13
+ Editor, adding the project's `com.unity.pipeline` package, telling a genuinely absent Editor
14
+ apart from one stuck in Safe Mode, and discovering the Editor's command catalog. Follow it
15
+ first; don't re-derive any of it here.
16
+
17
+ Two things it can't know for you:
18
+
19
+ - **You need `script eval` in particular**, not just a reachable Editor. Confirm it appears in the
20
+ catalog — its presence depends on the Pipeline package version, not on the CLI.
21
+ - **Never hand-edit a `.meta` file to change sprite metadata.** The importer owns that data
22
+ and the capability checks below exist to prevent corruption, so an unreachable Editor is a
23
+ stop, not a cue to improvise.
24
+
25
+ Run C# through the connected Editor with the `script eval` command. Discover its parameter shape
26
+ from `unity command --format json` rather than assuming one — the inline form is
27
+ `unity command script eval --caller plugin --skill sprite-editor --code '<snippet>'`, and some Pipeline versions also register
28
+ `script eval_file` for running a snippet from a file. **Check the catalog before reaching for
29
+ `script eval_file`; it is frequently absent.** `unity command` defaults to a 30 second timeout.
30
+
31
+ Generates C# editor scripts to manipulate Unity sprites using ISpriteEditorDataProvider. Works with TextureImporter, PSBImporter, and custom importers.
32
+
33
+ ### Passing C# to `script eval`
34
+
35
+ `script eval` compiles a **statement block, not a file**. Two consequences, both of which cause a
36
+ compile error rather than a warning:
37
+
38
+ - **No `using` directives.** The compiler reads `using UnityEngine;` as a resource-disposal
39
+ statement and rejects it (`CS0210`).
40
+ - **Types must be fully qualified.** A bare `AssetDatabase` or `Volume` does not resolve
41
+ (`CS0246` / `CS0103`), and a bare `Object` is ambiguous with `object` (`CS0104`).
42
+
43
+ Where a snippet below is written as a file — with usings, for readability, or because it is
44
+ meant to be saved into the project — qualify the types before passing it to `script eval`.
45
+
46
+ ## Workflow
47
+
48
+ All generated scripts must follow the Safe Core Pattern in [references/templates.md](references/templates.md), which includes MANDATORY capability checks. NEVER attempt operations if capability checks fail - this prevents data corruption. After execution, verify results in Unity console and Project window.
49
+
50
+ ## Common Operations
51
+
52
+ **Modify Name/Rect/Border/Pivot:** Update corresponding `SpriteRect` fields (see scripts/SetPivotExample.cs for pivot examples)
53
+ - Requires: `EditSpriteName`, `EditSpriteRect`, `EditBorder`, or `EditPivot`
54
+
55
+ **Add/Remove/Slice:** Create or filter `SpriteRect` array (see [references/background.md](references/background.md) for Unity 2021.2+ requirements)
56
+ - Requires: `CreateAndDeleteSprite`
57
+
58
+ **Set Outlines:** Get `ISpriteOutlineDataProvider` → Call `SetOutlines()` with GUID + Vector2 arrays
59
+
60
+ ## Important Notes
61
+
62
+ - Do NOT use AssetPostprocessor or MenuItem patterns
63
+ - Generate standalone snippets only — no `AssetPostprocessor`, no `MenuItem`
64
+ - **Enum assignments:** Always use enum values and cast to numeric types. Never use raw numbers.
65
+ - ✅ Correct: `(int)SpriteAlignment.Center`
66
+ - ❌ Wrong: `1` (magic number)
@@ -0,0 +1,151 @@
1
+ # Unity Sprite Editor API Reference
2
+
3
+ ## Table of Contents
4
+ - [Core Interface: ISpriteEditorDataProvider](#core-interface-ispriteeditordataprovider)
5
+ - [Properties](#properties)
6
+ - [Core Methods](#core-methods)
7
+ - [Callbacks](#callbacks)
8
+ - [Additional Data Providers](#additional-data-providers)
9
+ - [ISpriteNameFileIdDataProvider](#ispritenamefileiddataprovider)
10
+ - [ISpriteOutlineDataProvider](#ispriteoutlinedataprovider)
11
+ - [ISpritePhysicsOutlineDataProvider](#ispritephysicsoutlinedataprovider)
12
+ - [ISpriteBoneDataProvider](#ispritebonedataprovider)
13
+ - [ISpriteMeshDataProvider](#ispritemeshdataprovider)
14
+ - [ITextureDataProvider](#itexturedataprovider)
15
+ - [ISecondaryTextureDataProvider](#isecondarytexturedataprovider)
16
+ - [ISpriteFrameEditCapability](#ispriteframeeditcapability)
17
+ - [SpriteRect Properties](#spriterect-properties)
18
+ - [Common Patterns](#common-patterns)
19
+ - [Modifying Sprite Properties](#modifying-sprite-properties)
20
+ - [Working with Selection](#working-with-selection)
21
+ - [Version Considerations](#version-considerations)
22
+
23
+ ## Core Interface: ISpriteEditorDataProvider
24
+
25
+ Main interface for editing sprite data. See [templates.md](templates.md) for the standard initialization and usage pattern.
26
+
27
+ ### Properties
28
+ - `SpriteImportMode spriteImportMode` - How sprite data will be imported
29
+ - `float pixelsPerUnit` - Pixels per unit in world space
30
+ - `UnityObject targetObject` - Object providing the data
31
+
32
+ ### Core Methods
33
+ - `SpriteRect[] GetSpriteRects()` - Returns array of SpriteRect
34
+ - `void SetSpriteRects(SpriteRect[] spriteRects)` - Updates sprite rectangles
35
+ - `void Apply()` - Applies changed data
36
+ - `void InitSpriteEditorDataProvider()` - Initializes the provider
37
+ - `T GetDataProvider<T>()` - Gets additional data providers
38
+ - `bool HasDataProvider(Type type)` - Checks if provider type is supported
39
+
40
+ ### Callbacks
41
+ - `void RegisterDataChangeCallback(Action<ISpriteEditorDataProvider> action)`
42
+ - `void UnregisterDataChangeCallback(Action<ISpriteEditorDataProvider> action)`
43
+
44
+ ## Additional Data Providers
45
+
46
+ ### ISpriteNameFileIdDataProvider
47
+ Maps sprite names to file IDs (required for Unity 2021.2+ when adding/removing sprites).
48
+
49
+ ```csharp
50
+ var nameFileIdProvider = dataProvider.GetDataProvider<ISpriteNameFileIdDataProvider>();
51
+ IEnumerable<SpriteNameFileIdPair> pairs = nameFileIdProvider.GetNameFileIdPairs();
52
+ nameFileIdProvider.SetNameFileIdPairs(updatedPairs);
53
+ ```
54
+
55
+ ### ISpriteOutlineDataProvider
56
+ Manages outline data for sprite tessellation.
57
+
58
+ ```csharp
59
+ var outlineProvider = dataProvider.GetDataProvider<ISpriteOutlineDataProvider>();
60
+ List<Vector2[]> outlines = outlineProvider.GetOutlines(spriteGuid);
61
+ outlineProvider.SetOutlines(spriteGuid, newOutlines);
62
+ float tessellation = outlineProvider.GetTessellationDetail(spriteGuid);
63
+ outlineProvider.SetTessellationDetail(spriteGuid, 0.5f); // 0-1 range
64
+ ```
65
+
66
+ ### ISpritePhysicsOutlineDataProvider
67
+ Manages physics outlines for Polygon Collider 2D.
68
+
69
+ ```csharp
70
+ var physicsProvider = dataProvider.GetDataProvider<ISpritePhysicsOutlineDataProvider>();
71
+ List<Vector2[]> physicsOutlines = physicsProvider.GetOutlines(spriteGuid);
72
+ physicsProvider.SetOutlines(spriteGuid, newPhysicsOutlines);
73
+ float tessellation = physicsProvider.GetTessellationDetail(spriteGuid);
74
+ physicsProvider.SetTessellationDetail(spriteGuid, 0.5f);
75
+ ```
76
+
77
+ ### ISpriteBoneDataProvider
78
+ Manages bone data for 2D animation.
79
+
80
+ ```csharp
81
+ var boneProvider = dataProvider.GetDataProvider<ISpriteBoneDataProvider>();
82
+ List<SpriteBone> bones = boneProvider.GetBones(spriteGuid);
83
+ boneProvider.SetBones(spriteGuid, updatedBones);
84
+ ```
85
+
86
+ ### ISpriteMeshDataProvider
87
+ Manages custom sprite mesh data (vertices, indices, edges).
88
+
89
+ ```csharp
90
+ var meshProvider = dataProvider.GetDataProvider<ISpriteMeshDataProvider>();
91
+ Vertex2DMetaData[] vertices = meshProvider.GetVertices(spriteGuid);
92
+ int[] indices = meshProvider.GetIndices(spriteGuid);
93
+ Vector2Int[] edges = meshProvider.GetEdges(spriteGuid);
94
+
95
+ meshProvider.SetVertices(spriteGuid, newVertices);
96
+ meshProvider.SetIndices(spriteGuid, newIndices);
97
+ meshProvider.SetEdges(spriteGuid, newEdges);
98
+ ```
99
+
100
+ ### ITextureDataProvider
101
+ Provides texture data for Sprite Editor.
102
+
103
+ ```csharp
104
+ var textureProvider = dataProvider.GetDataProvider<ITextureDataProvider>();
105
+ Texture2D texture = textureProvider.texture;
106
+ Texture2D preview = textureProvider.previewTexture;
107
+ textureProvider.GetTextureActualWidthAndHeight(out int width, out int height);
108
+ Texture2D readable = textureProvider.GetReadableTexture2D();
109
+ ```
110
+
111
+ ### ISecondaryTextureDataProvider
112
+ Manages secondary textures.
113
+
114
+ ```csharp
115
+ var secondaryProvider = dataProvider.GetDataProvider<ISecondaryTextureDataProvider>();
116
+ SecondarySpriteTexture[] textures = secondaryProvider.textures;
117
+ secondaryProvider.textures = newTextures;
118
+ ```
119
+
120
+ ### ISpriteFrameEditCapability
121
+ Controls sprite frame editing capabilities.
122
+
123
+ ```csharp
124
+ var capabilityProvider = dataProvider.GetDataProvider<ISpriteFrameEditCapability>();
125
+ EditCapability capability = capabilityProvider.GetEditCapability();
126
+ capabilityProvider.SetEditCapability(newCapability);
127
+ ```
128
+
129
+ ## SpriteRect Properties
130
+
131
+ Key properties that can be modified on `SpriteRect`:
132
+
133
+ - `string name` - Sprite name
134
+ - `GUID spriteID` - Unique identifier (matches sprite asset's `GetSpriteID()`)
135
+ - `Rect rect` - Position and size in texture
136
+ - `Vector2 pivot` - Pivot point (0-1 range, relative to rect)
137
+ - `SpriteAlignment alignment` - Alignment preset (BottomLeft, Center, Custom, etc.)
138
+ - `Vector4 border` - 9-slice border (left, bottom, right, top)
139
+
140
+ **Note**: The `spriteID` property matches the GUID returned by calling `GetSpriteID()` on a sprite asset at runtime. This allows matching between editor-time configuration and runtime sprites.
141
+
142
+ ## Common Patterns
143
+
144
+ See [templates.md](templates.md) for code patterns including:
145
+ - Safe Core Pattern with capability checks
146
+ - Modifying sprite properties
147
+ - Working with selection
148
+
149
+ ## Version Considerations
150
+
151
+ See [background.md](background.md#version-specific-requirements) for Unity version-specific requirements (ISpriteNameFileIdDataProvider in 2021.2+).
@@ -0,0 +1,112 @@
1
+ # Sprite Editor Background Information
2
+
3
+ ## Table of Contents
4
+ - [Why Use ISpriteEditorDataProvider](#why-use-ispriteeditordataprovider)
5
+ - [Original vs Imported Image Sizes](#original-vs-imported-image-sizes)
6
+ - [The Critical Distinction](#the-critical-distinction)
7
+ - [Important Implications](#important-implications)
8
+ - [Critical for Slicing Operations](#critical-for-slicing-operations)
9
+ - [Importer Compatibility](#importer-compatibility)
10
+ - [TextureImporter Configuration](#textureimporter-configuration)
11
+ - [Other Importers](#other-importers)
12
+ - [Data Provider Initialization](#data-provider-initialization)
13
+ - [Version-Specific Requirements](#version-specific-requirements)
14
+ - [Unity 2021.2+](#unity-20212)
15
+ - [Unity 2021.1 and Earlier](#unity-20211-and-earlier)
16
+
17
+ ## Why Use ISpriteEditorDataProvider
18
+
19
+ **ISpriteEditorDataProvider provides a unified interface** that works across all importer types (TextureImporter, PSBImporter, custom importers). This ensures:
20
+ - Scripts work consistently regardless of importer type
21
+ - Changes are properly communicated to the importer
22
+ - Sprite metadata is handled correctly
23
+
24
+ **Never access importer-specific properties directly.** Always use ISpriteEditorDataProvider for compatibility.
25
+
26
+ ## Original vs Imported Image Sizes
27
+
28
+ ### The Critical Distinction
29
+
30
+ **Sprite data is always based on the original image size**, not the imported Texture2D size.
31
+
32
+ **Original Image Size:**
33
+ - The dimensions of the source image file before import
34
+ - Example: 4096x4096 PNG file
35
+
36
+ **Imported Texture2D Size:**
37
+ - The actual texture size after import
38
+ - Can be **smaller** due to:
39
+ - Platform-specific texture size limitations (e.g., mobile max 2048x2048)
40
+ - Texture compression settings
41
+ - Max texture size in import settings
42
+
43
+ ### Important Implications
44
+
45
+ 1. **All sprite data uses original coordinates:**
46
+ - Sprite rectangles (rect)
47
+ - Borders (for 9-slicing)
48
+ - Pivots
49
+ - Outline coordinates
50
+
51
+ 2. **Example:**
52
+ - Original image: 4096x4096 PNG
53
+ - Imported texture: 2048x2048 (due to max size setting)
54
+ - Sprite rect: `(0, 0, 4096, 4096)` ← Still uses original dimensions!
55
+
56
+ 3. **Unity handles scaling internally** when rendering sprites
57
+
58
+ 4. **Always work in original image coordinate space** when editing sprite data
59
+
60
+ ### Critical for Slicing Operations
61
+
62
+ When performing slicing (automatic, grid, isometric), you **MUST ensure the texture being sliced matches the original source image size**.
63
+
64
+ If the imported Texture2D is smaller than original:
65
+ - Slicing coordinates will be incorrect
66
+ - Sprite rectangles won't align with intended regions
67
+ - The operation will fail
68
+
69
+ **Solution:** Use `GetTextureToSlice` utility (see scripts/README.md) to ensure correct texture dimensions for slicing.
70
+
71
+ ## Importer Compatibility
72
+
73
+ ### TextureImporter Configuration
74
+
75
+ For TextureImporter to support sprites:
76
+ - `textureType` must be `TextureImporterType.Sprite`
77
+ - `spriteImportMode` must be `SpriteImportMode.Multiple` for multiple sprites
78
+
79
+ The pre-flight check automatically configures these settings.
80
+
81
+ ### Other Importers
82
+
83
+ PSBImporter and custom importers may have different configuration requirements. Always verify ISpriteEditorDataProvider support before attempting sprite operations.
84
+
85
+ ### Data Provider Initialization
86
+
87
+ See [templates.md](templates.md) for the standard initialization pattern. If `dataProvider` is null, the importer does not support sprite editing.
88
+
89
+ ## Version-Specific Requirements
90
+
91
+ ### Unity 2021.2+
92
+
93
+ Adding or removing sprites requires additional steps:
94
+
95
+ ```csharp
96
+ var nameFileIdProvider = dataProvider.GetDataProvider<ISpriteNameFileIdDataProvider>();
97
+ if (nameFileIdProvider != null)
98
+ {
99
+ // Get existing name-file ID pairs
100
+ var nameFileIdPairs = nameFileIdProvider.GetNameFileIdPairs();
101
+
102
+ // Update pairs when adding/removing sprites
103
+ // Add new pair: nameFileIdPairs.Add(new SpriteNameFileIdPair(name, fileId));
104
+ // Remove pair: nameFileIdPairs.RemoveAll(p => p.name == spriteName);
105
+
106
+ nameFileIdProvider.SetNameFileIdPairs(nameFileIdPairs);
107
+ }
108
+ ```
109
+
110
+ ### Unity 2021.1 and Earlier
111
+
112
+ ISpriteNameFileIdDataProvider does not exist. Simply use SetSpriteRects() without additional steps.
@@ -0,0 +1,72 @@
1
+ # Sprite Editor Code Templates
2
+
3
+ ## Safe Core Pattern (MANDATORY)
4
+
5
+ Types are fully qualified because this runs through `script eval`, which rejects `using` directives.
6
+ If you save it as a `.cs` file instead, add `using UnityEditor.U2D.Sprites;` and shorten them.
7
+
8
+ Use this structure for all sprite modification tasks.
9
+
10
+ **CRITICAL:** If capability checks fail, the script MUST return immediately. NEVER bypass capability checks even if you suspect the API might work - this can cause data corruption and violates Unity's data provider contract.
11
+
12
+ ```csharp
13
+ // 1. Get and Init Data Provider
14
+ var importer = UnityEditor.AssetImporter.GetAtPath(assetPath);
15
+ var factory = new UnityEditor.U2D.Sprites.SpriteDataProviderFactories();
16
+ factory.Init();
17
+ var dataProvider = factory.GetSpriteEditorDataProviderFromObject(importer);
18
+ dataProvider.InitSpriteEditorDataProvider();
19
+
20
+ // 2. MANDATORY: Check Capabilities - ABORT if not supported
21
+ var editCapability = dataProvider.GetDataProvider<UnityEditor.U2D.Sprites.ISpriteFrameEditCapability>();
22
+ if (editCapability == null)
23
+ {
24
+ throw new System.Exception("Edit capability not supported by importer. Operation aborted.");
25
+ }
26
+
27
+ var capability = editCapability.GetEditCapability();
28
+ // Check for: EditSpriteName, EditSpriteRect, EditBorder, EditPivot, CreateAndDeleteSprite
29
+ if (!capability.HasCapability(UnityEditor.U2D.Sprites.EEditCapability.EditSpriteName))
30
+ {
31
+ throw new System.Exception("Operation not supported by importer. User action aborted.");
32
+ }
33
+
34
+ // 3. Read and Modify
35
+ var spriteRects = dataProvider.GetSpriteRects();
36
+ // ... logic here ...
37
+
38
+ // 4. Apply and Reimport
39
+ dataProvider.SetSpriteRects(spriteRects);
40
+ dataProvider.Apply();
41
+ importer.SaveAndReimport();
42
+ ```
43
+
44
+ ## Capability Check Pattern
45
+
46
+ Before performing any modification operation, check if the importer supports it. **ABORT the user action if the capability is not supported.**
47
+
48
+ **DO NOT rationalize bypassing this check.** Even if you believe the API might accept the operation, capability checks are mandatory for data integrity. Return immediately on failure - no exceptions.
49
+
50
+ ```csharp
51
+ var editCapability = dataProvider.GetDataProvider<UnityEditor.U2D.Sprites.ISpriteFrameEditCapability>();
52
+ if (editCapability == null)
53
+ {
54
+ throw new System.Exception("Edit capability not supported by importer. User action aborted.");
55
+ return;
56
+ }
57
+
58
+ var capability = editCapability.GetEditCapability();
59
+ if (!capability.HasCapability(UnityEditor.U2D.Sprites.EEditCapability.EditSpriteName)) // Adjust based on task
60
+ {
61
+ throw new System.Exception("Importer does not support the requested operation. User action aborted.");
62
+ return;
63
+ }
64
+ ```
65
+
66
+ ### Available Capabilities
67
+
68
+ - `EditSpriteName` - Modify sprite names
69
+ - `EditSpriteRect` - Modify sprite rectangles
70
+ - `EditBorder` - Modify 9-slice borders
71
+ - `EditPivot` - Modify pivot points
72
+ - `CreateAndDeleteSprite` - Add/remove sprites or perform slicing
@@ -0,0 +1,40 @@
1
+ using System;
2
+ using UnityEditor.U2D.Sprites;
3
+
4
+ namespace Editor
5
+ {
6
+ static public partial class SpriteEditorUtility
7
+ {
8
+ /// <summary>
9
+ /// Automatically slices a texture by detecting visible pixel regions and creating sprite rectangles.
10
+ /// Uses Unity's internal automatic sprite detection algorithm to find sprite boundaries.
11
+ /// </summary>
12
+ /// <param name="spriteDataProvider">The sprite data provider for the texture.</param>
13
+ /// <param name="textureProvider">The texture data provider.</param>
14
+ /// <param name="minRectSize">Minimum size in pixels for detected sprite rectangles.</param>
15
+ /// <param name="extrudeSize">Number of pixels to extrude (expand) sprite boundaries.</param>
16
+ /// <param name="addNewSpriteMethod">Method for handling existing sprites (DeleteAll, Smart, Safe).</param>
17
+ /// <param name="nameGenerator">Function to generate sprite names based on index.</param>
18
+ /// <param name="kOverlapTolerance">Tolerance for detecting overlapping sprites.</param>
19
+ /// <param name="kBestFitTolerance">Tolerance for best-fit matching.</param>
20
+ /// <param name="bestFit">Whether to use best-fit algorithm for overlap detection.</param>
21
+ /// <returns>True if slicing succeeded, false if texture is not readable.</returns>
22
+ static public bool AutomaticSliceTexture(ISpriteEditorDataProvider spriteDataProvider, ITextureDataProvider textureProvider,
23
+ int minRectSize, int extrudeSize, AddNewSpriteMethod addNewSpriteMethod, Func<int, string> nameGenerator,
24
+ float kOverlapTolerance= 0.00001f, float kBestFitTolerance = 0.5f, bool bestFit = false)
25
+ {
26
+ var texture = GetTextureToSlice(textureProvider);
27
+ if (texture == null)
28
+ {
29
+ return false;
30
+ }
31
+
32
+ var rects = UnityEditorInternal.InternalSpriteUtility.GenerateAutomaticSpriteRectangles(texture, minRectSize, extrudeSize);
33
+
34
+ var newRects = GenerateNewSpriteRects(spriteDataProvider, rects, addNewSpriteMethod, nameGenerator, kOverlapTolerance, kBestFitTolerance, bestFit);
35
+ spriteDataProvider.SetSpriteRects(newRects.ToArray());
36
+
37
+ return true;
38
+ }
39
+ }
40
+ }