Oh, I see. I have been misled by your project setup of the missing attachments, and I incorrectly assumed that e.g. JuliaArmor/footL
was intended to show the naked foot attachment, but it is instead intended to show an armoured boot. I will have another look at your project and will get back to you when we've figured it out.
The problem turned out to be that all your attachments are successfully set, but they are just not shown in setup pose. E.g. you have Slot forearmL
and in the setup pose you have attachment JuliaNude/forearmL
active. Now you add the attachment JuliaArmor/forearmL
at the same slot, but never switch to this attachment at the slot, keeping the setup pose attachment JuliaNude/forearmL
active of the two attachments.
A nice tool for testing such issues is opening the Skeleton Debug
window (SkeletonAnimation
Inspector - Advanced
- Debug
) and inspect all slots.
The difference to the Goblins project, and why it works out-of-the-box there, is that in the Goblins project, a skin placeholder is used at each slot.
E.g. in the goblins base skeleton.json:
"slots": [
{ "name": "left-shoulder", "bone": "left-shoulder", "attachment": "left-shoulder" },
and in the skin goblins.json file this skin placeholder is set:
"slots": [
{ "name": "left-shoulder", "bone": "left-shoulder", "attachment": "left-shoulder" },
"skins":
..
"left-shoulder": {
"left-shoulder": {
"name": "goblin/left-shoulder",
In contrast, in your projects there seems to be no skin placeholder name used, but instead directly the default attachment name is referenced:
"slots": [
{ "name": "footR", "bone": "P_FootR", "attachment": "JuliaNude/footR" },
while in the skin .json
file it is referencing JuliaArmor/footL
:
"slots": [
{ "name": "footR", "bone": "P_FootR", "attachment": "JuliaArmor/footL" },
...
"skins":
..
"footR": {
"JuliaArmor/footL"
This will then not be replaced by the SetSkin()
call, but will instead be added as a second attachment.
So please check whether you are using skin placeholders with the same name in both projects, then it will work without any additional code required.