Nate लिखाYou can use the "combine subdirectories" setting to pack images in folders (subdirectories) into the same atlas page. If they don't fit they will spill over into subsequent pages.

Just found that the latest version has this option missing. No wonder why I don't find it.
Unchecking Export for a skin causes that skin and its attachments to not be written in exported JSON or binary data. You can inspect the JSON and make sure that is the case. The only reason you should ever get "missing region" messages in Unity is that there are attachments in the data that don't have a matching texture region in the atlas.
Exactly, the xxx.export.json didn't store which skin to ignore. Thus, when exporting from command line using that export.json file , all skins are exported. That's the issue. Alhought exporting directly from spine UI mode works, it would not be easy because for each skin, user has to manually adjust the ignore list for the skins.
Here is the saved export.json file. Not mentioning the export-unchecked skins at all.
{
"class": "export-binary",
"name": "Binary",
"project": "Kids.spine",
"output": "D:/exports/Units/Npc/HarbourKids",
"open": false,
"extension": ".skel.bytes",
"nonessential": false,
"cleanUp": false,
"packAtlas": {
"stripWhitespaceX": true,
"stripWhitespaceY": true,
"rotation": true,
"alias": true,
"ignoreBlankImages": false,
"alphaThreshold": 3,
"minWidth": 16,
"minHeight": 16,
"maxWidth": 2048,
"maxHeight": 2048,
"pot": true,
"multipleOfFour": false,
"square": false,
"outputFormat": "png",
"jpegQuality": 0.9,
"premultiplyAlpha": true,
"bleed": false,
"scale": [ 0.5 ],
"scaleSuffix": [ "_half" ],
"scaleResampling": [ "bicubic" ],
"paddingX": 1,
"paddingY": 1,
"edgePadding": true,
"duplicatePadding": false,
"filterMin": "Linear",
"filterMag": "Linear",
"wrapX": "ClampToEdge",
"wrapY": "ClampToEdge",
"format": "RGBA8888",
"atlasExtension": ".atlas.txt",
"combineSubdirectories": false,
"flattenPaths": false,
"useIndexes": false,
"debug": false,
"fast": false,
"limitMemory": true,
"currentProject": true,
"packing": "polygons",
"silent": false,
"ignore": false,
"bleedIterations": 2
},
"packSource": "attachments",
"packTarget": "perskeleton",
"warnings": true
}
I changed the combineSubdirectories to true directly from .json file. It works, now only output one PNG.
However, when try to export directly from Spine Editor instead of command line. It has error.
The HomeTown_Girl skin has "export" unchecked and it blame not being able to find it.
Spine Launcher 3.8.82
Esoteric Software LLC (C) 2013-2020 | http://esotericsoftware.com
Windows 10 Enterprise x86 10.0
Spine 3.8.93 Professional
Licensed to: Secret
Pack: skeleton
Complete.
ERROR: Unable to export:
java.lang.RuntimeException: java.lang.RuntimeException: Skin not found in skeleton: HomeTown_Girl
at OT.Z(SourceFile:1858)
at CF.S(SourceFile:48)
at AP.run(SourceFile:671)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: Skin not found in skeleton: HomeTown_Girl
at sX.S(SourceFile:853)
at sX.S(SourceFile:428)
at sX.S(SourceFile:103)
at sX.S(SourceFile:123)
at CH.run(SourceFile:60)
at OV.run(SourceFile:1846)
at cOM9.S(SourceFile:289)
at Com2.run(SourceFile:252)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue.access$600(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)